HDU - 1272 小希的迷宫 并查集判断无向环及连通问题 树的性质
小希的迷宫
Input输入包含多组数据,每组数据是一个以0 0结尾的整数对列表,表示了一条通道连接的两个房间的编号。房间的编号至少为1,且不超过100000。每两组数据之间有一个空行。
整个文件以两个-1结尾。
Output对于输入的每一组数据,输出仅包括一行。如果该迷宫符合小希的思路,那么输出"Yes",否则输出"No"。
Sample Input
6 8 5 3 5 2 6 4
5 6 0 0 8 1 7 3 6 2 8 9 7 5
7 4 7 8 7 6 0 0 3 8 6 8 6 4
5 3 5 6 5 2 0 0 -1 -1
Sample Output
Yes
Yes
No 并查集好题。并查集判断无向图环及连通问题,利用无向图(实质为一棵树)的性质,若合并两点根节点相同则合并后形成环,根节点的个数即为连通分支的个数。
#include<stdio.h> int f[],b[],c;
int find(int x)
{
return f[x]==x?x:f[x]=find(f[x]);
}
void join(int x,int y)
{
int fx=find(x),fy=find(y);
if(fx!=fy) f[fy]=fx;
else c=; //若并的两点根节点相同,合并后形成环
}
int main()
{
int x,y,z,min,max,i;
while(scanf("%d%d",&x,&y)&&!(x==-&&y==-)){
if(x==){
printf("Yes\n"); //还是不懂。。什么都没有就满足?
continue;
}
min=;max=;
for(i=;i<=;i++){
f[i]=i;
b[i]=;
}
join(x,y);
b[x]=;b[y]=;
if(x>max) max=x;if(x<min) min=x;
if(y>max) max=y;if(y<min) min=y;
c=;z=;
while(scanf("%d%d",&x,&y)&&!(x==&&y==)){
join(x,y);
b[x]=;b[y]=;
if(x>max) max=x;if(x<min) min=x;
if(y>max) max=y;if(y<min) min=y;
if(c==&&z==){
z=;
printf("No\n");
} //判断环
}
if(c==){
int co=;
for(i=min;i<=max;i++){
if(f[i]==i&&b[i]) co++;
}
if(co!=) printf("No\n",co);
else printf("Yes\n"); //判断连通(根节点的个数为连通分支的个数)
}
}
return ;
}
一题多解,还可以利用树的性质,点数=边数+1。
#include<stdio.h>
#include<string.h>
int main()
{
int n,c,cc,max,min,x,y,i;
int a[];
while(scanf("%d%d",&x,&y)&&!(x==-&&y==-)){
if(x==){
printf("Yes\n");
continue;
}
memset(a,,sizeof(a));
c=;max=;min=;
a[x]=;a[y]=;
c++;
if(x>max) max=x;if(x<min) min=x;
if(y>max) max=y;if(y<min) min=y;
while(scanf("%d%d",&x,&y)&&!(x==&&y==)){
a[x]=;a[y]=;
c++;
if(x>max) max=x;if(x<min) min=x;
if(y>max) max=y;if(y<min) min=y;
}
cc=;
for(i=min;i<=max;i++){
if(a[i]==) cc++;
}
if(cc==c+) printf("Yes\n"); //点数=边数+1
else printf("No\n");
}
return ;
}
HDU - 1272 小希的迷宫 并查集判断无向环及连通问题 树的性质的更多相关文章
- <hdu - 1272> 小希的迷宫 并查集问题 (注意特殊情况)
本题链接:http://acm.hdu.edu.cn/showproblem.php?pid=1272 Problem Description: 上次Gardon的迷宫城堡小希玩了很久(见Probl ...
- HDU 1272 小希的迷宫 并查集
小希的迷宫 Time Limit: 2000/1000 MS (Java/Others) Memory Limit: 65536/32768 K (Java/Others)Total Submi ...
- (step5.1.6)hdu 1272(小希的迷宫——并查集)
题目大意:输入一系列的点,判断这些点组成的图符不符合小希的思路(无环.连通) 解题思路: 1)如果两个节点的根节点相同,那么在这两个节点之间添加1条边以后,这个图肯定有环路. 2)孤立节点:被使用过& ...
- hdu 1257 小希的迷宫 并查集
小希的迷宫 Time Limit: 20 Sec Memory Limit: 256 MB 题目连接 http://acm.hdu.edu.cn/showproblem.php?pid=1272 D ...
- hdu1272小希的迷宫(并查集判断回路和是否连通)
传送门 迷宫中不能有回路,还要连通 如果最后集合数是一个那就是连通,否则不联通 要合并的两个顶点在相同集合内,表示出现了回路 输入时注意一下 #include<bits/stdc++.h> ...
- hdu-1272 小希的迷宫---并查集或者DFS
题目链接: http://acm.hdu.edu.cn/showproblem.php?pid=1272 题目大意: Problem Description 上次Gardon的迷宫城堡小希玩了很久(见 ...
- HDU 1272小希的迷宫(裸并查集,要判断是否构成环,是否是连通图)
题目链接: http://acm.hdu.edu.cn/showproblem.php?pid=1272 小希的迷宫 Time Limit: 2000/1000 MS (Java/Others) ...
- hdu 1272 小希的迷宫(并查集+最小生成树+队列)
题目链接:http://acm.hdu.edu.cn/showproblem.php?pid=1272 小希的迷宫 Time Limit: 2000/1000 MS (Java/Others) ...
- HDU 1272 小希的迷宫 (并查集)
小希的迷宫 题目链接: http://acm.hust.edu.cn/vjudge/contest/123393#problem/L Description 我们的小伙伴Bingo身为大二学长,他乐于 ...
随机推荐
- 数据挖掘项目之---通过对web日志的挖掘来实现内容推荐系统
先说一说问题,不知道大家有没有这样的经验,反正我是经常碰到. 举例1,某些网站每隔几天就发邮件给我,每次发的邮件内容都是一些我根本不感兴趣的东西,我不甚其扰,对其深恶痛绝. 举例2,添 ...
- IOS8 UIAlertController 弹框
本文转载至 http://blog.csdn.net/jinkaiouyang/article/details/35551769 IOS8中,Apple将UIActionSheet和UIAlertVi ...
- EasyHLS实现将IPCamera摄像机的RTSP流转成HLS(ts+m3u8)直播输出
本文转自:http://www.cnblogs.com/babosa/p/6033039.html EasyHLS EasyHLS是EasyDarwin开源流媒体团队开发的一款HLS打包库,接口非常简 ...
- 远程访问Linux的常见方式
访问方式 不加密文字界面:telnet.rsh 加密文字界面:SSH 图形界面:Xdmcp.RDP.VNC SSH SSH用来取代finger.R shell(rlogin.rcp.rsh).teln ...
- llmp_install.zip
https://pan.baidu.com/s/14tQdE9CPe55P5m9rGm5ekw
- appium(4)-Automating mobile web apps
Automating mobile web apps If you’re interested in automating your web app in Mobile Safari on iOS o ...
- android DHCP流程【转】
本文转载自:http://blog.csdn.net/myvest/article/details/51483647 版权声明:本文为博主原创文章,未经博主允许不得转载. 目录(?)[+] 1 ...
- UVA12293 Box Game —— SG博弈
题目链接:https://vjudge.net/problem/UVA-12293 题意: 两人玩游戏,有两个盒子,开始时第一个盒子装了n个球, 第二个盒子装了一个球.每次操作都将刷量少的盒子的球倒掉 ...
- HTML页面下雪特效
1. [代码][HTML]代码 <a href="javascript:void(function(){var d = document,a = 'setAttribute' ...
- cookie(点心的意思)服务器给客户端的点心
他是用户访问web服务器时,服务器在用户硬盘上存放的信息,好像是服务器给客户端的“点心”.比如:是否记录用户名密码.其中,A服务器不允许访问B服务器存在客户端的cookie 一个cookie包含一对k ...