题目描述

在古老的魔兽传说中,有两个军团,一个叫天灾,一个叫近卫。在他们所在的地域,有n个隘口,编号为1..n,某些隘口之间是有通道连接的。其中近卫军团在1号隘口,天灾军团在n号隘口。某一天,天灾军团的领袖巫妖王决定派兵攻打近卫军团,天灾军团的部队如此庞大,甚至可以填江过河。但是巫妖王不想付出不必要的代价,他想知道在不修建任何通道的前提下,部队是否可以通过隘口及其相关通道到达近卫军团展开攻击;如果可以的话,最少需要经过多少通道。由于n的值比较大(n<=1000),于是巫妖王找到了擅长编程的你 =_=,请你帮他解决这个问题,否则就把你吃掉变成他的魔法。为了拯救自己,赶紧想办法吧。

输入

输入包含多组,每组格式如下。

第一行包含两个整数n,m(分别代表n个隘口,这些隘口之间有m个通道)。
下面m行每行包含两个整数a,b;表示从a出发有一条通道到达b隘口(注意:通道是单向的)。

输出

如果天灾军团可以不修建任何通道就到达1号隘口,那么输出最少经过多少通道,否则输出NO。

示例输入

2 1
1 2
2 1
2 1

示例输出

NO
1

提示

[cpp] view plaincopyprint?
  1. #include <stdio.h>
  2. #include <string.h>
  3. int map1[1002][1002], visit[2000];
  4. struct node
  5. {
  6. int x, ans;
  7. } q[2000];
  8. void bfs(int i, int n)
  9. {
  10. int s=1, e=1, j;
  11. node f1,f2;
  12. f1.x=i;
  13. f1.ans=0;
  14. q[s++]=f1;
  15. visit[f1.x]=1;
  16. while(s>e)
  17. {
  18. f1=q[e++];
  19. if(f1.x==1)
  20. {
  21. printf("%d\n",f1.ans);
  22. return ;
  23. }
  24. for(j=1; j<=n; j++)
  25. {
  26. f2.x=j;
  27. if(!visit[f2.x]&&map1[f1.x][f2.x])
  28. {
  29. visit[f2.x]=1;
  30. f2.ans=f1.ans+1;
  31. q[s++]=f2;
  32. }
  33. }
  34. }
  35. printf("NO\n");
  36. return ;
  37. }
  38. int main()
  39. {
  40. int n, m, i, j, a, b;
  41. while(scanf("%d%d",&n,&m)!=EOF)
  42. {
  43. memset(map1,0,sizeof(map1));
  44. memset(visit,0,sizeof(visit));
  45. for(i=0; i<m; i++)
  46. {
  47. scanf("%d%d",&a,&b);
  48. map1[a][b]=1;
  49. }
  50. bfs(n,n);
  51. }
  52. return 0;
  53. }

图结构练习——BFS——从起始点到目标点的最短步数相关推荐

  1. 2139图结构练习——BFS——从起始点到目标点的最短步数

    图结构练习--BFS--从起始点到目标点的最短步数 Time Limit: 1000MS Memory Limit: 65536KB Submit Statistic Discuss Problem ...

  2. 图结构练习——BFS——从起始点到目标点的最短步数(邻接表+BFS)

    图练习-BFS-从起点到目标点的最短步数 Time Limit: 1000ms   Memory limit: 65536K  有疑问?点这里^_^ 题目描述 在古老的魔兽传说中,有两个军团,一个叫天 ...

  3. 从起始点到目标点的最短步数(BFS)

    从起始点到目标点的最短步数(BFS) Time Limit: 1000 ms Memory Limit: 65536 KiB Problem Description 在古老的魔兽传说中,有两个军团,一 ...

  4. SDUT OJ 数据结构实验之图论五:从起始点到目标点的最短步数(BFS)

    数据结构实验之图论五:从起始点到目标点的最短步数(BFS) Time Limit: 1000 ms Memory Limit: 65536 KiB Submit Statistic Discuss P ...

  5. 数据结构实验之图论五:从起始点到目标点的最短步数(BFS)

    Description 在古老的魔兽传说中,有两个军团,一个叫天灾,一个叫近卫.在他们所在的地域,有n个隘口,编号为1-n,某些隘口之间是有通道连接的.其中近卫军团在1号隘口,天灾军团在n号隘口.某一 ...

  6. 2139=数据结构实验之图论五:从起始点到目标点的最短步数(BFS)

    1 #include<stdio.h> 2 #include<string.h> 3 int map[1000][1000],visit[1000]; 4 int step,m ...

  7. sdut_2139 数据结构实验之图论五:从起始点到目标点的最短步数(BFS)

    Description 在古老的魔兽传说中,有两个军团,一个叫天灾,一个叫近卫.在他们所在的地域,有n个隘口,编号为1-n,某些隘口之间是有通道连接的.其中近卫军团在1号隘口,天灾军团在n号隘口.某一 ...

  8. 【算法】广度遍历算法的应用 求出距离顶点v0的最短路径长度为最长的一个顶点,图结构的bfs生成树及其双亲表示形式

    例: 求出距离顶点v0的最短路径长度为最长的一个顶点,并要求尽可能节省时间 分析: 用bfs算法(利用bfs算法的层次特性): 从v0出发进行广度遍历时, 最后一层的顶点距离v0的最短路径长度最长.因 ...

  9. SDUT OJ 图练习-BFS-从起点到目标点的最短步数 (vector二维数组模拟邻接表+bfs , *【模板】 )...

    图练习-BFS-从起点到目标点的最短步数 Time Limit: 1000ms   Memory limit: 65536K  有疑问?点这里^_^ 题目描述 在古老的魔兽传说中,有两个军团,一个叫天 ...

最新文章

  1. python matplotlib模块画出的图像转换为.tiff格式
  2. html css 极简模板,极简主义作品展示HTML模板
  3. linux跑r语言代码,R语言快捷键(示例代码)
  4. QT的QDesignerMemberSheetExtension类的使用
  5. python代码学习-数据处理图片加遮挡、噪声、模糊
  6. [文摘20071008]全国软考相关-计算机技术与软件专业资格(水平)考试
  7. Mysql按时间段分组查询来统计会员的个数
  8. 联想小新air13pro重装系统_小新air13pro改win7系统 联想小新air13pro安装win7系统教程...
  9. 脚本语言和编程语言的比较
  10. Sqlist 插入、删除元素
  11. java 分组求和函数_java8 怎么精简分组求和
  12. java接口和抽象函数_Java接口和抽象类区别
  13. 新闻与Android相关的话题,热门话题 - 换个角度看新闻 #iOS #Android
  14. 编写一个帮助小学生练习数学的程序,帮助小学生练习 100 以内的四种数学运算:加、减、乘、除。
  15. SNAT与DNAT详解
  16. 数据库系统原理选择题总结
  17. LKY-简单手拉手会议扩声方案
  18. 千月影视v21 2023年新版 前端+后端+h5 无授权运营级 仅供学习研究使用
  19. 超级全面的100个思维导图模板
  20. mybatis中大于等于(=>)小于等于(<=)的写法

热门文章

  1. 亚马逊AWS EC2云实例AMI安装LNMP环境(1)——Nginx安装
  2. 多态基类与虚析构函数
  3. Groovy开发语言
  4. SQL Server 数据库基础编程
  5. 构建物联网网络的4个关键步骤简介
  6. Geoff Hinton:我反对谷歌军事项目,论文评审机制正在阻碍创新
  7. IDEA Project Structure 配置说明
  8. oracle新建用户和授权及其删除
  9. 记住密码后input黄色背景处理
  10. VirtualBox虚拟机导出导入实践