c语言,这个被学长逐渐用c++替代的语言,这个每个编程新手都会去接触的语言,才是给编程者最大自由的语言,这一点,我深信不疑。
上次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
//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);father[p] = q;
}
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))//如果a和b已经处于连通状态,那么现在再次输入的a和b相直接连通就等价于a和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;
}

小希的迷宫(请永远相信c语言的强大)相关推荐

  1. 杭电 1272 poj 1308 小希的迷宫

    这道题是我学了并查集过后做的第三个题,教我们的学姐说这是并查集的基础题,所以有必要牢牢掌握. 下面就我做这道题的经验,给大家一些建议吧!当然,我的建议不是最好的,还请各位大神指出我的错误来,我也好改正 ...

  2. HDU1272 小希的迷宫【并查集】

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

  3. 小希的迷宫(并查集)

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

  4. HDU Problem 1272 小希的迷宫 【并查集】

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

  5. 并查集杭电1272小希的迷宫

    New~ 欢迎参加--计算机学院大学生程序设计竞赛(新生为主) 小希的迷宫 Time Limit: 2000/1000 MS (Java/Others)    Memory Limit: 65536/ ...

  6. hdu 1272 小希的迷宫 (并查集)

    小希的迷宫                                                                          Time Limit: 2000/1000 ...

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

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

  8. 学校(School)主要有3大角色:学校(School),讲师(Teacher),学员(Student)。请用Python语言简要实现这些类及及其属性,以及它们之间的关系。

    学校(School)主要有3大角色:学校(School),讲师(Teacher),学员(Student). 学校可以注册学员,统计有多少学员 讲师负责讲课 学生听课,提问,学习,交学费 Teacher ...

  9. 内存(Display)、显示器(Monitor)和计算机(Computer)均属于一种产品(Product),其中计算机需要显示器和内存。请用Python语言简要实现这些类及它们之间的关系。

    内存(Display).显示器(Monitor)和计算机(Computer)均属于一种产品(Product),其中计算机需要显示器和内存.请用Python语言简要实现这些类及它们之间的关系. clas ...

最新文章

  1. 中国电子信息工程科技发展十四大趋势(2021)
  2. aws python lambda_AWS Lambda
  3. python白名单验证是什么意思_第10.5节 使用__all__定义Python模块导入白名单
  4. ASP.NET Core自定义响应内容
  5. 机器学习 导论_机器学习导论
  6. SQLServer 批量插入数据的两种方法
  7. 安装选择Arduino Leonardo新手入门体验
  8. C4D OCtane渲染器大师之路笔记(四):使用OC灯光
  9. 机械硬盘与互联网文明
  10. MATLAB识别实验,基于MATLAB的人脸识别系统实验报告.pdf
  11. 年薪和月薪有什么区别
  12. ubuntu下使用github安装R Packages[已解决]
  13. 【字体在哪个文件夹】Win7怎么安装字体
  14. GPS卫星同步时钟,GPS卫星时钟,GPS时钟
  15. ARM Translation 下载 | ARM Translation Download
  16. 新浪微博是如何支撑百万 QPS 的?
  17. 虚拟主机++iRedMail搭建邮箱服务器
  18. tableau无法建立连接_的Tableau错误连接到本地MySQL数据库
  19. 利用pstools和任务计划定期批量清理IIS日志
  20. 使用VM15创建虚拟机并安装CentOS 7 连接不到网络解决方法(设置静态ip)

热门文章

  1. 金币(NOIP2015 普及组第一题)
  2. linux集群时间同步搭建
  3. zepto为什么不支持animate,报animate is not a function
  4. 博客园的神回复,程序猿的奇葩神回复[连载][二]
  5. 用php向MySQL的datetime类型插入数据
  6. DevExpress控件介绍
  7. 674. Longest Continuous Increasing Subsequence最长连续递增子数组
  8. FastDFS+Nginx+Module
  9. php重定向http请求
  10. HTTPS反向代理嗅探