SDUT OJ 图练习
SDUT OJ 图练习
图练习-BFS-从起点到目标点的最短步数 Time Limit: 1000ms Memory limit: 6556K 有疑问?点这里^_^ 题目描述 在古老的魔兽传说中,有两个军团,一个叫天灾,一个叫近卫。在他们所在的地域,有n个隘口,编号为1..n,某些
SDUT OJ 图练习
图练习-BFS-从起点到目标点的最短步数
Time Limit: 1000ms Memory limit: 6556K 有疑问?点这里^_^
题目描述
在古老的魔兽传说中,有两个军团,一个叫天灾,一个叫近卫。在他们所在的地域,有n个隘口,编号为1..n,某些隘口之间是有通道连接的。其中近卫军团在1号隘口,天灾军团在n号隘口。某一天,天灾军团的领袖巫妖王决定派兵攻打近卫军团,天灾军团的部队如此庞大,甚至可以填江过河。但是巫妖王不想付出不必要的代价,他想知道在不修建任何通道的前提下,部队是否可以通过隘口及其相关通道到达近卫军团展开攻击;如果可以的话,最少需要经过多少通道。由于n的值比较大(n<=100000),于是巫妖王到了擅长编程的你 =_=,请你帮他解决这个问题,否则就把你吃掉变成他的魔法。为了拯救自己,赶紧想办法吧。输入
输入包含多组,每组格式如下。 第一行包含两个整数n(n <= 100000),m(m <= 200000)(分别代表n个隘口,这些隘口之间有m个通道)。 下面m行每行包含两个整数a,b;表示从a出发有一条通道到达b隘口(注意:通道是双向的)。输出
如果天灾军团可以不修建任何通道就到达1号隘口,那么输出最少经过多少通道,否则输出O。示例输入
2 1 1 2 2 1 2 1
示例输出
1 1
代码:
#include <stdio.h>
#include <string.h>
#include <stdlib.h>
#include <vector>
#include <algorithm>
#include <queue>
using namespace std;vector<int>q[100001];//基于vector二维数组的BFS模拟遍历void BFS(int n)
{bool vis[100001];memset(vis, false, sizeof(vis));queue<int>p;p.push(n);vis[n]=true;int dd;vector<int>::iterator it;int flag=0;int cnt[100001];memset(cnt, 0, sizeof(cnt));while(!()){dd=p.front();p.pop();for(it=q[dd].begin(); it!=q[dd].end(); it ) {if(vis[*it]==false){cnt[*it]=cnt[dd]1;p.push(*it);vis[*it]=true;if(*it==1){flag=1; break;}}}if(flag==1)break;}if(flag==0 )printf(O\n);elseprintf(%d\n, cnt[1] );
}int main()
{int n, m;int u, v;int i, j;while(scanf(%d %d, &n, &m)!=EOF){for(i=0; i<=100000; i){q[i].clear();}for(i=0; i<m; i){scanf(%d %d, &u, &v );q[u].push_back(v);q[v].push_back(u);}BFS(n);}return 0;
} /**************************************Problem id : SDUT OJ 280 Result : Accepted Take Memory : 812K Take Time : 460MS Submit Time : 2015-01-18 09:9:14
**************************************/
转载于:.html
#感谢您对电脑配置推荐网 - 最新i3 i5 i7组装电脑配置单推荐报价格的认可,转载请说明来源于"电脑配置推荐网 - 最新i3 i5 i7组装电脑配置单推荐报价格
上传时间: 2024-02-05 12:11:57
推荐阅读
留言与评论(共有 20 条评论) |
本站网友 浦东星河湾 | 30分钟前 发表 |
6556K 有疑问?点这里^_^ 题目描述 在古老的魔兽传说中,有两个军团,一个叫天灾,一个叫近卫 | |
本站网友 525252 | 2分钟前 发表 |
由于n的值比较大(n<=100000),于是巫妖王到了擅长编程的你 =_=,请你帮他解决这个问题,否则就把你吃掉变成他的魔法 | |
本站网友 ie8卸载 | 27分钟前 发表 |
其中近卫军团在1号隘口,天灾军团在n号隘口 | |
本站网友 上海大宁瑞仕花园 | 8分钟前 发表 |
其中近卫军团在1号隘口,天灾军团在n号隘口 | |
本站网友 哈尔滨二手房出售信息 | 20分钟前 发表 |
2015-01-18 09 | |
本站网友 水痘的症状图片 | 6分钟前 发表 |
输出 如果天灾军团可以不修建任何通道就到达1号隘口,那么输出最少经过多少通道,否则输出O | |
本站网友 平陆租房信息 | 24分钟前 发表 |
但是巫妖王不想付出不必要的代价,他想知道在不修建任何通道的前提下,部队是否可以通过隘口及其相关通道到达近卫军团展开攻击;如果可以的话,最少需要经过多少通道 | |
本站网友 南朗二手房 | 23分钟前 发表 |
m;int u | |
本站网友 mederma | 13分钟前 发表 |
&u | |
本站网友 80后创业者 | 8分钟前 发表 |
812K Take Time | |
本站网友 创意家居产品 | 4分钟前 发表 |
某一天,天灾军团的领袖巫妖王决定派兵攻打近卫军团,天灾军团的部队如此庞大,甚至可以填江过河 | |
本站网友 sniffer下载 | 13分钟前 发表 |
输入 输入包含多组,每组格式如下 | |
本站网友 美好家园网 | 30分钟前 发表 |
6556K 有疑问?点这里^_^ 题目描述 在古老的魔兽传说中,有两个军团,一个叫天灾,一个叫近卫 | |
本站网友 南广学院 | 1分钟前 发表 |
sizeof(cnt));while(!()){dd=p.front();p.pop();for(it=q[dd].begin(); it!=q[dd].end(); it ) {if(vis[*it]==false){cnt[*it]=cnt[dd]1;p.push(*it);vis[*it]=true;if(*it==1){flag=1; break;}}}if(flag==1)break;}if(flag==0 )printf(O\n);elseprintf(%d\n | |
本站网友 盲人方阵 | 1分钟前 发表 |
m;int u | |
本站网友 宣美 | 29分钟前 发表 |
sizeof(vis));queue<int>p;p.push(n);vis[n]=true;int dd;vector<int> | |
本站网友 十二个为什么 | 9分钟前 发表 |
但是巫妖王不想付出不必要的代价,他想知道在不修建任何通道的前提下,部队是否可以通过隘口及其相关通道到达近卫军团展开攻击;如果可以的话,最少需要经过多少通道 | |
本站网友 美景集团 | 20分钟前 发表 |
14 **************************************/ 转载于 | |
本站网友 近视眼矫正手术 | 3分钟前 发表 |
460MS Submit Time |