小希的迷宫

                                                                         Time Limit: 2000/1000 MS (Java/Others)    Memory Limit: 65536/32768 K (Java/Others)

Problem Description
上次Gardon的迷宫城堡小希玩了很久(见Problem B),现在她也想设计一个迷宫让Gardon来走。但是她设计迷宫的思路不一样,首先她认为所有的通道都应该是双向连通的,就是说如果有一个通道连通了房间A和B,那么既可以通过它从房间A走到房间B,也可以通过它从房间B走到房间A,为了提高难度,小希希望任意两个房间有且仅有一条路径可以相通(除非走了回头路)。小希现在把她的设计图给你,让你帮忙判断她的设计图是否符合她的设计思路。比如下面的例子,前两个是符合条件的,但是最后一个却有两种方法从5到达8。 
Input
输入包含多组数据,每组数据是一个以0 0结尾的整数对列表,表示了一条通道连接的两个房间的编号。房间的编号至少为1,且不超过100000。每两组数据之间有一个空行。 
整个文件以两个-1结尾。
Output
对于输入的每一组数据,输出仅包括一行。如果该迷宫符合小希的思路,那么输出"Yes",否则输出"No"。
Sample Input
6 8 5 3 5 2 6 4 5 6 0 08 1 7 3 6 2 8 9 7 5 7 4 7 8 7 6 0 03 8 6 8 6 4 5 3 5 6 5 2 0 0-1 -1
Sample Output
Yes Yes No
这道并查集的题目与其他题目相比,有几个要注意地方:1.房间编号并不是1—n,有些数字并没有出现,所以要用一个数组标记数字是否出现;2.如果查找到输入的两个数字的根节点相同,说明它们已经连通了,再加一条边就有多条相通的路径,用FLAG记录是否有多条相通路径;3.要判断所有房间是不是属于同一个集合。
//flag[i]数组标记i是否出现,FLAG标记是否有环,sum记录集合的个数
#include<stdio.h>
const int N = 100005;
int flag[N], father[N];
void Init()
{for(int i = 0; i <= 100000; i++)flag[i] = 0, father[i] = i;
}
int Find(int x)
{if(x != father[x])father[x] = Find(father[x]);return father[x];
}
void Merge(int a, int b)
{int p = Find(a);int q = Find(b);if(p > q)father[p] = q;elsefather[q] = p;
}
int main()
{int a, b;while(~scanf("%d%d",&a,&b)){if(a == -1 && b == -1)break;Init();int FLAG = 0;while(1){if(a == 0 && b == 0)break;if(Find(a) == Find(b))FLAG = 1;Merge(a,b);flag[a] = 1, flag[b] = 1;scanf("%d%d",&a,&b);}if(FLAG == 1)printf("No\n");else{int sum = 0;for(int i = 0; i <= 100000; i++)if(flag[i] && father[i] == i)sum++;if(sum > 1)printf("No\n");elseprintf("Yes\n");}}return 0;
}

hdu 1272 小希的迷宫 (并查集)相关推荐

  1. HDU 1272 小希的迷宫 (并查集)

    小希的迷宫 Time Limit: 2000/1000 MS (Java/Others) Memory Limit: 65536/32768 K (Java/Others) Total Submiss ...

  2. 【判断是不是树】HDU 1272 小希的迷宫

    HDU 1272 小希的迷宫 题意:输入多组无向边,结点的标号是随机的(可以不连续也可以不从1开始).然后让我们判断是不是刚好是一棵树. 需要注意的就是:0 0空树的情况. 代码:(带注释) #inc ...

  3. HDU——1272小希的迷宫(并查集+拓扑排序)

    小希的迷宫 Time Limit: 2000/1000 MS (Java/Others)    Memory Limit: 65536/32768 K (Java/Others) Total Subm ...

  4. HDU 1272 - 小希的迷宫(并查集判树)

    目录 Problem Description C++代码 Problem Description 上次Gardon的迷宫城堡小希玩了很久(见Problem B),现在她也想设计一个迷宫让Gardon来 ...

  5. hdu 1272 小希的迷宫

    Problem Description 上次Gardon的迷宫城堡小希玩了很久(见Problem B),现在她也想设计一个迷宫让Gardon来走.但是她设计迷宫的思路不一样,首先她认为所有的通道都应该 ...

  6. HDOJ---1272 小希的迷宫[并查集]

    小希的迷宫 Time Limit: 2000/1000 MS (Java/Others)    Memory Limit: 65536/32768 K (Java/Others) Total Subm ...

  7. HDU 1272 小希的迷宫 (kruskal)

    题目描述 上次Gardon的迷宫城堡小希玩了很久(见Problem B),现在她也想设计一个迷宫让Gardon来走.但是她设计迷宫的思路不一样,首先她认为所有的通道都应该是双向连通的,就是说如果有一个 ...

  8. HDU - 1272小希的迷宫

    上次Gardon的迷宫城堡小希玩了很久(见Problem B),现在她也想设计一个迷宫让Gardon来走.但是她设计迷宫的思路不一样,首先她认为所有的通道都应该是双向连通的,就是说如果有一个通道连通了 ...

  9. B - 小希的迷宫 (并查集判断是否存在环)

    题目描述 上次Gardon的迷宫城堡小希玩了很久(见Problem B),现在她也想设计一个迷宫让Gardon来走.但是她设计迷宫的思路不一样,首先她认为所有的通道都应该是双向连通的,就是说如果有一个 ...

最新文章

  1. mcDropdown使用方法
  2. Oracle 10g RAC RMAN备份异机单实例恢复
  3. Listview 多个ViewHolder实现
  4. 想当然是编程最大的坑,记更新删除过期cookie无效有感
  5. 51单片机 自动重装载值计算
  6. 【Oracle 集群】Linux下Oracle RAC集群搭建之基本测试与使用(九)
  7. SpringBoot—启动原理
  8. Chrome 下input的默认样式
  9. the process cannot access the file because it is being used by another process
  10. Python 数据科学手册 5.5 朴素贝叶斯分类
  11. 开课吧Java课堂之动态方法调度
  12. 关于Java的this关键字
  13. 【MIT 6.S081】实验四:traps (实验暂停)
  14. 移动端日历插件_“滴答清单”移动端产品分析报告
  15. 电气工程和自动化哪个专业就业前景好?
  16. 破解XP 管理员Administrator密码
  17. 用Python画动态圣诞树 学会了送给你女朋友呀~
  18. Dreamweaver CS 5 快捷键大全
  19. webservice 405 java_用浏览器测试Get与Post Webservice,Post一直报405错误,而Get能够成功的原因与解决方法...
  20. Unity Google Android登录接入

热门文章

  1. 从比特大陆AI芯片入局智慧城市看阿里腾讯的城市“攻坚战”...
  2. spring boot 2.0 集成shiro注意事项
  3. 浏览器是如何展示网页的
  4. soap header身份认证 不带ns标签
  5. 用.NET 2.0压缩解压功能处理大型数据
  6. butter fly graph
  7. 知识产权创业的比赛结果
  8. 第一次二刷的电影:工作细胞
  9. mphil in engineering最后颁发的学位是
  10. 数学建模感悟:新的算法的学习