SDUT-2139_从起始点到目标点的最短步数(BFS)
数据结构实验之图论五:从起始点到目标点的最短步数(BFS)
Time Limit: 1000 ms Memory Limit: 65536 KiB
Problem Description
在古老的魔兽传说中,有两个军团,一个叫天灾,一个叫近卫。在他们所在的地域,有n个隘口,编号为1..n,某些隘口之间是有通道连接的。其中近卫军团在1号隘口,天灾军团在n号隘口。某一天,天灾军团的领袖巫妖王决定派兵攻打近卫军团,天灾军团的部队如此庞大,甚至可以填江过河。但是巫妖王不想付出不必要的代价,他想知道在不修建任何通道的前提下,部队是否可以通过隘口及其相关通道到达近卫军团展开攻击;如果可以的话,最少需要经过多少通道。由于n的值比较大(n<=1000),于是巫妖王找到了擅长编程的你 =_=,请你帮他解决这个问题,否则就把你吃掉变成他的魔法。为了拯救自己,赶紧想办法吧。
Input
输入包含多组,每组格式如下。
第一行包含两个整数n,m(分别代表n个隘口,这些隘口之间有m个通道)。
下面m行每行包含两个整数a,b;表示从a出发有一条通道到达b隘口(注意:通道是单向的)。
Output
如果天灾军团可以不修建任何通道就到达1号隘口,那么输出最少经过多少通道,否则输出NO。
Sample Input
2 1
1 2
2 1
2 1
Sample Output
NO
1
题解:用什么方法题目里说的很清楚了...
BFS类似于广度优先搜索,同样也是加入了一个条件,同时也多存储了一个数值,步数。
*深度优先遍历和广度优先遍历
#include <string.h>
#include <stdio.h>
#include <stdlib.h>
#include <math.h>
int s[1050][1050];/*利用邻接矩阵来记录图*/
int n;/*n节点数量*/
int f[1050];/*记录点是否被遍历过*/
typedef struct node
{
int s,num;/*s记录哪个点,num记录步数*/
}node;/*模拟队列*/
void BFS()
{
int i,fr,ba;
node p[1050],t1,t2;
for(i=1;i<=n;i++)
f[i] = 0;
f[n] = 0;
t1.s = n;
t1.num = 0;
fr = ba = 0;
p[ba++] = t1;/*利用队列进行BFS*/
while(fr!=ba)
{
t1 = p[fr++];
int dx = t1.s;
if(dx==1)/*证明可以到达1点,输出步数,结束函数*/
{
printf("%d\n",t1.num);
return;
}
for(i=1;i<=n;i++)
{
if(!f[i]&&s[dx][i])/*如果联通且没有被遍历过,那么标记该点,并且入队*/
{
f[i] = 1;
t2.s = i;
t2.num = t1.num + 1;
p[ba++] = t2;
}
}
}
/*如果while结束,则证明不可达*/
printf("NO\n");
}
int main()
{
int m,i,j;
while(scanf("%d%d",&n,&m)!=EOF)
{
for(i=1;i<=n;i++)
for(j=1;j<=n;j++)
s[i][j] = i==j?1:0;
for(i=0;i<m;i++)
{
int a,b;
scanf("%d%d",&a,&b);
s[a][b] = 1;
}
BFS();
}
return 0;
}
SDUT-2139_从起始点到目标点的最短步数(BFS)的更多相关文章
- SDUT OJ 数据结构实验之图论五:从起始点到目标点的最短步数(BFS)
数据结构实验之图论五:从起始点到目标点的最短步数(BFS) Time Limit: 1000 ms Memory Limit: 65536 KiB Submit Statistic Discuss P ...
- 图结构练习——BFS——从起始点到目标点的最短步数(邻接表+BFS)
图练习-BFS-从起点到目标点的最短步数 Time Limit: 1000ms Memory limit: 65536K 有疑问?点这里^_^ 题目描写叙述 在古老的魔兽传说中.有两个军团,一个 ...
- 数据结构实验之图论五:从起始点到目标点的最短步数(BFS)
分析:有向图里面找最短路径,原理就是每一步都走距离自己最近的路, 一旦发现走一步可以到,那么这个一定是最短的. #include <bits/stdc++.h> using namespa ...
- SDUT OJ 图练习-BFS-从起点到目标点的最短步数 (vector二维数组模拟邻接表+bfs , *【模板】 )
图练习-BFS-从起点到目标点的最短步数 Time Limit: 1000ms Memory limit: 65536K 有疑问?点这里^_^ 题目描述 在古老的魔兽传说中,有两个军团,一个叫天 ...
- 图练习-BFS-从起点到目标点的最短步数(sdut 2830)邻接边表
http://acm.sdut.edu.cn/sdutoj/problem.php?action=showproblem&problemid=2830 题目描述 在古老的魔兽传说中,有两个军团 ...
- 图练习-BFS-从起点到目标点的最短步数
http://acm.sdut.edu.cn/sdutoj/problem.php?action=showproblem&problemid=2830 简单bfs #include <s ...
- 启发式搜索A*算法
A* 寻路算法 (2011-02-15 10:53:11) 转载▼ 标签: 游戏 分类: 算法 概述 虽然掌握了 A* 算法的人认为它容易,但是对于初学者来说, A* 算法还是很复杂的. 搜索区域(T ...
- TSPL学习笔记(4):数组相关练习
最近研究函数式编程,都是haskell和scheme交互着看的,所以笔记中两种语言的内容都有,练习一般也都用两种语言分别实现. 本篇练习一些数组有关的问题,之所以与数组相关是因为在命令式编程中以下问题 ...
- 制作自己的ros机器人(navigaion)前提--22
摘要: 原创博客:转载请表明出处:http://www.cnblogs.com/zxouxuewei/ 一.要求: 1.大家已经对ROS的基本概念(进程间通讯topic service 数据类型 m ...
随机推荐
- 【JOB】Oracle中JOB的创建方法以及一个细节的探究
在Oracle中可以使用JOB来实现一些任务的自动化执行,类似于UNIX操作系统crontab命令的功能.简单演示一下,供参考. 1.创建表T,包含一个X字段,定义为日期类型,方便后面的定时任务测试. ...
- Luogu P1073 最优贸易(最短路)
P1073 最优贸易 题意 题目描述 \(C\)国有\(n\)个大城市和\(m\)条道路,每条道路连接这\(n\)个城市中的某两个城市.任意两个城市之间最多只有一条道路直接相连.这\(m\)条道路中有 ...
- uni-app开发的应用(小程序,app,web等),使用Node+Koa2开发的后端程序接收上传文件的方法
uni-app使用使用Node+Koa2开发的后端程序接收上传的文件 通过gitbook浏览此随笔 通过其它客户端上传(h5,小程序等),接收方法一致 使用koa接收时,我们需安装一个中间件koa-b ...
- ACdream 1108(莫队)
题目链接 The kth number Time Limit: 12000/6000MS (Java/Others)Memory Limit: 128000/64000KB (Java/Others) ...
- 磁力搜索网站 BT torrent search engine 推荐 2019/12/25日更新
btkitty 知名的BT磁力搜索,资源很多,中文友好 btdb 知名的BT磁力搜索,资源很多,中文友好 838888 不错的 BT 磁力搜索引擎,资源很多,中文友好 idope.se 资源丰富的BT ...
- div代码大全 DIV代码使用说明
一.DIV代码语法 - TOP DIV代码是放入小于与大于符号内,即“<div>”. DIV是一对闭合标签,即“”开始,“结束”的盒子标签. 语法结构: <div>我是内容&l ...
- 在Mac下安装MySQL
在Mac下安装MySQL 最近开始将开发工具都转移到 Mac 上了,其中也会莫名其妙的遇到一些坑,不如干脆将整个流程都记录下来,方便以后查找. 下载与安装 首先进入 MySQL 官网,选择免费的C ...
- 虚拟机安装redis
sudo pecl install redis 先代码里先phpinfo(); 看看php版本 有可能是7.2 sudo vim /etc/php/7.1/fpm/php.ini (注意 php ...
- Excel怎么增加撤销操作的次数?Excel增加可撤销次数教程
Excel怎么增加撤销操作的次数?Excel增加可撤销次数教程 在Excel的使用中,返回上一步是经常用到的一个工具,当数据填写有误需要查看之前的内容时,一般会通过"Ctrl Z" ...
- maven本地仓库有jar包,maven install还是报错识别不到
去本地仓库对应jar的目录下看下,有一个 _remote.repositories 的文件打开 ***.pom>xxx=***.jar>xxx= 这个 xxx 就是你maven的setti ...