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; 
    }
    

      

  • 相关阅读:
    setlocale
    c++的 程序实体 作用域 名空间 变量生存期概念理解
    本人的Ubuntu 10.04配置清单
    hadoopStreamming 编程 Angels
    级联 mapreduce (Cascading Mapreduce) Angels
    委托
    OPC和XML/SOAP/Web Services
    实例管理2(会话服务)
    实例管理3()
    操作(Operation)
  • 原文地址:https://www.cnblogs.com/zhang-yd/p/7821664.html
Copyright © 2011-2022 走看看