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
#include<stdio.h>
#include<string.h>
int farth[100005],ran[100005],use[100005],t,n,m,flog,k;
void first_set()
{int i;for(i=0;i<=100000;i++)farth[i]=i;                //开始每一个父节点是其本身memset(ran,0,sizeof(ran));//表示集合的大小memset(use,0,sizeof(use));//表示当前的点是否存在,1表示存在
}
int find_first_Farth(int x)//找出当前点x的最原始的父节点
{//printf("%dx %df ",x,farth[x]);while(x!=farth[x])x=farth[x];//farth[x]=find_first_Farth(farth[x]);return x;
}
int uion(int x,int y)
{x=find_first_Farth(x);//找出x的最终父结点;最开始时父结点是其本身y=find_first_Farth(y);//找了y的最终父结点if(x==y)//说明形成了一个环return 0;if(ran[x]<ran[y])//把x所在的小集合,合并到y所在的大集合里面去farth[x]=y;else{if(ran[x]==ran[y])//把同等级的集合 合并到一个集合里ran[x]++;farth[y]=x;}return 1;
}
int main()
{while(scanf("%d%d",&n,&m)>0){first_set();flog=1;if(n==-1&&m==-1)break;uion(n,m);use[n]=1;use[m]=1;k=1;if(n!=0||m!=0)while(scanf("%d%d",&n,&m)>0){if(n==0&&m==0)break;if(use[n]==0){k++;use[n]=1;//1表示n的这个点己经存在了}if(use[m]==0){k++;use[m]=1;}if(uion(n,m)==0)flog=0;elsek--;//记录点和边的差值}printf("%s\n",(flog!=0&&k==1)?"Yes":"No");}
}
/*1 2 3 4 0 0 N0*///这种情况的话,虽没有形成环,但是是两个不相干的直线

hdu1272(小希迷宫 并查集)相关推荐

  1. 集合数据hdu1272(小希迷宫 并查集)

    查了好多资料,发现还是不全,干脆自己整理吧,最少保证在我的做法正确的,以免误导读者,也是给自己做个记录吧! Problem Description 前次Gardon的迷宫城堡小希玩了很久(见Probl ...

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

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

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

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

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

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

  5. hdu1272(简单并查集)

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

  6. 小希的迷宫-HDU-1272(并查集or树性质)

    题目链接:小希的迷宫 并查集: 无回路 单连通 并查集做,首先想到的是判断两个点是否连通,不连通就合并,已连通的话说明会形成回路,则可以判定No,交了一发错了. 想了一下没有考虑到多个连通域的情况,该 ...

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

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

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

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

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

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

最新文章

  1. 健康日志之口腔粘膜----7-13
  2. 【 C 】用动态数组实现堆栈
  3. ImportError: No module named arcpy
  4. 毕业设计——学术交流管理系统的设计与实现-1
  5. 业界首发丨网易云信虚拟人解决方案,首创客户端+云端双渲染技术
  6. linux之mutex(互斥锁)
  7. 登陆 manager app显示不是私密链接_小米上线了一款靠指静脉识别开锁的私密箱,打造你的私人存储空间...
  8. 机器学习(三)k均值聚类
  9. 您已到达6300千米深度,速度8 公里/秒,正在穿过地心 [置顶]
  10. 谷歌同意向法国支付近10亿美元罚款 以了结4年前的财务欺诈调查
  11. go 输入输出流(bufio)
  12. 利用DllPlugin分割你的第三方库
  13. LeetCode-1.两数之和(哈希表)
  14. ArcGIS建立拓扑并检查修改
  15. 灵格斯Lingoes词典及浏览器插件实现屏幕取词等功能的配置使用方法
  16. 适合于初学者—软路由全探索系列(二):探索群晖 VMM 虚拟机旁路由安装及设置
  17. 如何指定多边形区域下载地图
  18. M580PLC以太网读通讯和写通讯
  19. 除了USDT,还能用什么,传说中的“USDT暴雷”是否成真?
  20. Windows7 半角全角快捷键 修改方法

热门文章

  1. 自己总结的Unity3d RPG网络游戏 UI逻辑 框架(基于NGUI)
  2. matlab中dare 和care,dare 的用法
  3. vcd文件中存储多维数组 vcs_IC设计——EDA软件篇——VCS使用
  4. php怎么判断账号已登录,PHP判断用户登录状态
  5. javascript学习笔记下篇--浏览器对象
  6. Python绘图制作混淆矩阵图--简易版(改矩阵参数就能运行)
  7. 年末行情!12月银行理财收益率惊现两位数
  8. 华为鸿蒙新机2k曲面屏,华为5G新旗舰已确认,双曲面屏+升级到鸿蒙2.0,价格很感人...
  9. ASEMI场效应管AO3400概述,AO3400参数,AO3400特性曲线
  10. 六、 rewrite的使用