NWU CCCC 1017(HDU 1272改编 并查集判断图是否存在环)
来源:互联网 发布:php开发管理系统 编辑:程序博客网 时间:2024/05/16 02:40
Evio与观察小白鼠
Time Limit : 3000/1000ms (Java/Other) Memory Limit : 65535/32768K (Java/Other)
Total Submission(s) : 13 Accepted Submission(s) : 3
Font: Times New Roman | Verdana | Georgia
Font Size: ← →
Problem Description
Evio非常喜欢生物,Evio现在想观察小白鼠的记忆能力。Evio想设计一个任意两个房间只有一条路径的地图。这个地图有m条双向通道,这条通道连接房间A和房间B,由于地图过于复杂,Evio想请你帮忙判断这个地图是否满足要求。
Input
每组数据第一行有一个正整数m(2<=n<=1000)。
接下来n行有两个正整数A B(1<=A,B<=10000),表示房间A和房间B之间有条双向通道。
接下来n行有两个正整数A B(1<=A,B<=10000),表示房间A和房间B之间有条双向通道。
Output
输出一行,表示地图是否满足要求,满足要求时输出”Yes”,否则输出”No”。
Sample Input
21 22 321 23 4
Sample Output
YesNo
思路:为了防止 (1,2)(3,4)这种情况,需要判断集合的个数,当且仅当只有一个集合的时候才满足题意。
#include <iostream>#include <cstdio>#include <cstring>using namespace std;int F[10005];int visit[10005];int get_far(int x){ return F[x] == x ? x : F[x] = get_far(F[x]);}void Union(int x,int y){ int a = get_far(F[x]),b = get_far(F[y]); if(a != b) F[a] = b;}int main(){ int n; while(cin>>n){ memset(visit,0,sizeof(visit)); for(int i = 0;i <= 20000;i ++) F[i] = i; int a,b; int flag = 0; int maxn=-1; int minn=99999999; for(int i = 1;i <= n;i ++){ scanf("%d%d",&a,&b); maxn = max(maxn,max(a,b)); minn = min(minn,min(a,b)); if(get_far(F[a]) != get_far(F[b])) Union(a,b); else flag = 1; visit[a] = visit[b] = 1; } int ans = 0; if(flag) cout<<"No"<<endl; else{ for(int i = minn;i <= maxn;i ++){ int x = get_far(i); if(x == i && visit[i]) //得到了集合的个数 ans++; } if(ans == 1) cout<<"Yes"<<endl; else//集合个数不为 1 个的时候,必然不满足题意。 cout<<"No"<<endl; } } return 0;}
0 0
- NWU CCCC 1017(HDU 1272改编 并查集判断图是否存在环)
- 并查集-判断无向图是否存在环
- 并查集---判断图中是否存在环
- 杭电1272~~小希的迷宫——并查集判断是否存在环
- hdu1272小希的迷宫(并查集--判断是否有环的存在)
- HDU 3974 Assign the task (并查集改编)
- HDU 1272 小希的迷宫(并查集,判断是否成环)
- HDU 1325(并查集判断一个图是否是一棵树)
- HUD 1272 (并查集判断是否有环)
- UVA 1160 - X-Plosives 即LA3644 并查集判断是否存在环
- UVA 1160 - X-Plosives 并查集判断是否存在环
- hdu 2120 Ice_cream's world I(判断是否有环,简单的并查集)
- hdu 1272 小希的迷宫 并查集->如何判断是否组成一串 即一棵树
- HDU 1272 小希的迷宫(并查集 + 判断是否有回路)
- hdu 1558 Segment set(并查集+判断线段是否相交)
- NWU CCCC选拔赛 1014阶乘问题(思维题)
- NWU CCCC 1014(又是二叉树分冶)
- hdu 1325 Vs hdu 1272 is it a tree ? 并查集:对是否是树的判断
- POJ3463 Sightseeing(dijkstra求最短路+次短路)
- linux 文件的atime,ctime,mtime
- NEON
- 安卓中下载APK到本地中(罗传榕)
- 2深入使用Spring
- NWU CCCC 1017(HDU 1272改编 并查集判断图是否存在环)
- 有一种技巧叫投资
- POJ - 2230 Watchcow
- 3Spring整合struts2
- 数据库中聚簇索引与非聚簇索引的区别
- this是指向对象本身的一个指针
- Codevs 1904 最小路径覆盖问题
- 4Spring MVC配置
- LeetCode - 62. Unique Paths