zoukankan      html  css  js  c++  java
  • hihocoder-1624-最短游览路线

    hihocoder-1624-最短游览路线

    #1624 : 最短游览路线

    时间限制:10000ms
    单点时限:1000ms
    内存限制:256MB

    描述

    十一期间小Hi被朋友拉去某座名山旅游。这座山上一共有N个景点,编号1~N,通过M条单向缆车相连。  

    小Hi和朋友的出发点在1号景点。小Hi正在等待某公司的面试电话,所以他希望找一条路线,搭乘最少次数的缆车(至少一次),回到出发点。  

    你能求出最少搭乘缆车的次数吗?

    输入

    第一行包含两个整数N和M。  

    以下M行,每行包含两个整数a和b,代表有一条从a到b的单向缆车。  

    对于30%的数据,1 ≤ N ≤ 10, 1 ≤ M ≤ 90

    对于100%的数据,1 ≤ N ≤ 10000, 1 ≤ M ≤ 100000, 1 ≤ a, b ≤ N, a ≠ b

    输出

    回到出发点最少搭乘缆车的次数。如果无法通过缆车回到出发点输出-1。

    样例输入
    5 7  
    1 2  
    5 1  
    2 4  
    2 3  
    3 2  
    3 4  
    4 5
    样例输出
    4
    #include <cstdio> 
    #include <iostream> 
    #include <vector> 
    using namespace std; 
    
    const int MAXN = 10000 + 10; 
    
    int queue_step[MAXN], queue[MAXN], vis[MAXN]; 
    
    vector<int> mp[MAXN]; 
    
    int bfs(int cur, const int n){
    	for(int i=1; i<=n; ++i){
    		vis[i] = 0; 
    	}
    	int head = 0, tail = 0; 
    	queue[ head ] = cur; 
    	queue_step[ head++ ] = 0; 
    	while(head > tail){
    		int site = queue[tail]; 
    		int cur_s = queue_step[tail++]; 
    		for(int i=0; i<mp[ site ].size(); ++i){
    			if( mp[site][i] == cur ){
    				return (cur_s + 1); 
    			}
    			if( vis[mp[site][i]] == 0 ){
    				queue[ head ] = mp[site][i]; 
    				queue_step[head++] = cur_s + 1; 
    				vis[ mp[site][i] ] = 1; 
    			}
    		}
    	}
    	return -1; 
    }
    
    
    int main(){
    
    	int n, m, ans, a, b; 
    	while(scanf("%d %d", &n, &m) != EOF){
    		for(int i=1; i<=n; ++i){
    			mp[i].clear(); 
    		}
    
    		for(int i=1; i<=m; ++i){
    			scanf("%d %d", &a, &b); 
    			mp[a].push_back(b); 
    		}
    		ans = bfs(1, n); 
    
    		printf("%d
    ", ans );
    	}
    	return 0; 
    }
    

      

  • 相关阅读:
    数学+高精度 ZOJ 2313 Chinese Girls' Amusement
    最短路(Bellman_Ford) POJ 1860 Currency Exchange
    贪心 Gym 100502E Opening Ceremony
    概率 Gym 100502D Dice Game
    判断 Gym 100502K Train Passengers
    BFS POJ 3278 Catch That Cow
    DFS POJ 2362 Square
    DFS ZOJ 1002/HDOJ 1045 Fire Net
    组合数学(全排列)+DFS CSU 1563 Lexicography
    stack UVA 442 Matrix Chain Multiplication
  • 原文地址:https://www.cnblogs.com/zhang-yd/p/7821664.html
Copyright © 2011-2022 走看看