[Swust OJ 85]--单向公路(BFS)
题目链接:http://acm.swust.edu.cn/problem/0085/
某个地区有许多城镇,但并不是每个城镇都跟其他城镇有公路连接,且有公路的并不都能双向行驶。现在我们把这些城镇间的公路分布及允许的行驶方向告诉你,你需要编程解决通过公路是否可以从一个城镇到达另一个城镇。(我们规定,城镇自己跟自己可互相到达,即A可到达A).
Input
第一行只有一个数N,下面将跟着2N行数据. 在前N行数据中,对于每行数据,最开头一个数字number,表明这一行总共有number个数,number的下一个数为i,代表编号为i的那个城镇.这行余下的就是跟i有公路连接的城镇的(编号)名单,且只能从城镇i驶向其他城镇。如 4 1 2 3,表明:此行有4个数,跟城镇1有公路连接的城镇是编号为2和3的城镇.是从1连到2 和3 ,不能从2 和3 连到1. 在后N行数据中,每行由两个数字组成a,b(表示城镇的编号). 对于每个输入的数有如下关系 0 <= input_number <= 1000 .
对于输入数据中的每个a,b,判断是否可以从城镇a通过公路到达城镇b,如果可以,输出Yes;否则输出No.
Sample Input
|
3
4 1 2 3
3 4 5
3 5 8
1 2
1 8
4 8
|
|
Yes
No
Yes
|
#include <iostream>
#include <queue>
#include <cstring>
#include <algorithm>
using namespace std;
int mpt[][], vis[];
int bfs(int x, int y, int n){
queue<int> Q;
Q.push(x);
while (!Q.empty()){
int now = Q.front();
Q.pop();
if (now == y) return ;
for (int i = ; i < n; i++){
if (!vis[i] && mpt[now][i]){
vis[i] = ;
Q.push(i);
}
}
}
return ;
}
int main(){
int n, t, x, y, i, j, maxn = -;
cin >> t;
for (i = ; i < t; i++){
cin >> n >> x;
for (j = ; j < n - ; j++){
cin >> y;
mpt[x][y] = ;
maxn = max(maxn, max(x, y) + );//找出出现的点的最大值+1,避免大范围搜索不必要的点
}
}
for (i = ; i < t; i++){
memset(vis, , sizeof(vis));
cin >> x >> y;
cout << (bfs(x, y, maxn) ? "Yes\n" : "No\n");
}
return ;
}
以前有个代码,个人感觉没问题,但是一直Rutime Error,有大神路过给个原因吧~~~
代码如下:
#include <stdio.h>
#include <string.h>
#define maxn 10001
int map[maxn][maxn], max;
int dfs(int star, int next)
{
int i, flag, vis[maxn];
memset(vis, , sizeof(vis));
vis[star] = ;
if (map[star][next] == )
return ;
for (i = , flag = ; i <= max&&!flag; i++)
{
if (vis[i] == && map[star][i] == )
{
vis[i] = ;
flag = dfs(i, next);
vis[i] = ;
}
}
return flag;
}
int main()
{
int i, j, m, n;
int star, next;
scanf("%d", &n);
memset(map, , sizeof(map));
for (i = ; i<maxn; i++)
map[i][i] = ;
max = ;
for (i = ; i <= n; i++)
{
scanf("%d%d", &m, &star);
if (star> max)
max = star;
for (j = ; j <= m - ; j++)
{
scanf("%d", &next);
if (next > max)
max = next;
map[star][next] = ;
}
}
for (i = ; i <= n; i++)
{
scanf("%d%d", &star, &next);
if (dfs(star, next))
printf("YES\n");
else
printf("NO\n");
}
return ;
}
[Swust OJ 85]--单向公路(BFS)的更多相关文章
- 1107: 单向公路(bfs+输入整理)(DFS也可以,而且更快)
Description 某个地区有许多城镇,但并不是每个城镇都跟其他城镇有公路连接,且有公路的并不都能双向行驶.现在我们把这些城镇间的公路分布及允许的行驶方向告诉你,你需要编程解决通过公路是否可以从一 ...
- YCOJ单向公路
题目: 描述 某地区有许多城镇,但并不是每个城镇都跟其他城镇有公路连接,并且有的公路并不能双向行驶.现在我们把这些城镇间的公路分布及允许的行驶方向告诉你,你需要编程解决通过公路是否可以从一个城镇到达另 ...
- [Swust OJ 404]--最小代价树(动态规划)
题目链接:http://acm.swust.edu.cn/problem/code/745255/ Time limit(ms): 1000 Memory limit(kb): 65535 Des ...
- [Swust OJ 649]--NBA Finals(dp,后台略(hen)坑)
题目链接:http://acm.swust.edu.cn/problem/649/ Time limit(ms): 1000 Memory limit(kb): 65535 Consider two ...
- SWUST OJ NBA Finals(0649)
NBA Finals(0649) Time limit(ms): 1000 Memory limit(kb): 65535 Submission: 404 Accepted: 128 Descri ...
- [Swust OJ 1023]--Escape(带点其他状态的BFS)
解题思路:http://acm.swust.edu.cn/problem/1023/ Time limit(ms): 5000 Memory limit(kb): 65535 Descript ...
- [Swust OJ 1126]--神奇的矩阵(BFS,预处理,打表)
题目链接:http://acm.swust.edu.cn/problem/1126/ Time limit(ms): 1000 Memory limit(kb): 65535 上一周里,患有XX症的哈 ...
- [Swust OJ 409]--小鼠迷宫问题(BFS+记忆化搜索)
题目链接:http://acm.swust.edu.cn/problem/409/ Time limit(ms): 1000 Memory limit(kb): 65535 Description ...
- 【bfs】单向公路-C++
描述 某地区有许多城镇,但并不是每个城镇都跟其他城镇有公路连接,并且有的公路并不能双向行驶.现在我们把这些城镇间的公路分布及允许的行驶方向告诉你,你需要编程解决通过公路是否可以从一个城镇到达另一个城镇 ...
随机推荐
- BZOJ 2561: 最小生成树(最小割)
U,V能在最小(大)生成树上,当且仅当权值比它小(大)的边无法连通U,V. 两次最小割就OK了. --------------------------------------------------- ...
- 获取json格式字符串的简单方法
有的时候需要找一些Json格式的字符串,可以打开任意一个网页进入到调试模式,然后看network相关的访问信息,就可以获取到. 比如: 在记笔记的时候,点击保存后,会发出一些请求,然后有相应的相应,任 ...
- C#代码模拟http发送get和post请求
private string HttpPost(string Url, string postDataStr) { HttpWebRequest request = (HttpWebRequest)W ...
- 0527 python 基础01
折行的处理 \>>> print "hi \... hello Lucy!"hi hello Lucy! 自然字符串,字符串加上r或R前缀指定>>&g ...
- 解决eclipse中maven出现的Failure to transfer XXX.jar的问题
这个问题很烦,试了好几次都没有彻底解决,今天终于找到解决办法了. 问题主要出在,maven在下载jar的过程中出现了中断或者错误问题(不仅仅是eclipse,其他IDE也一样) 解决办法: 移除之前的 ...
- centos7 install magento
http://mirrors.yun-idc.com/epel/7/x86_64/e/epel-release-7-2.noarch.rpmrpm --import /etc/pki/rpm-gpg/ ...
- 怪兽z主机 驱动集
这里给买家朋友送上我们主机的驱动包. 1.主板驱动. 访问密码 f334 http://yunpan.cn/QNTGxehcnLBW5 2.AMD显卡催化剂 amd catalyst(没装的话,无法 ...
- SIM卡厂商的识别方法
ICCID(SIM卡号码)的定义应该是: 1-6位:国际移动运营商识别码(IMSI),898600为中国移动,898601为中国联通 7-20位:移动和联通的定义是不同的. 中国移动: 第7.8 ...
- APUE学习之---------------进程
离职了,交接期也有足够的时间了,可以在好好的再看一下APUE,想想上次详细的看还是在两年之前,虽然中间也偶尔会翻出来看看,但是由于工作上交集相对比较少一直没有去细读一下.现在正好是一段空挡期可以好好看 ...
- HDU-4866-Shooting(函数式线段树)
Problem Description In the shooting game, the player can choose to stand in the position of [1, X] t ...