HDU-1272 小希的迷宫 并查集
2014-01-19 12:01
507 查看
题目链接
#include "stdio.h" const int maxn = 100050; int p[maxn],rank[maxn]; bool vis[maxn]; int n,flag; int find( int x ) { return p[x] == x ? x:p[x] = find(p[x]); } void merge( int a,int b ) { int x = find(a); int y = find(b); if( x!=y ) if( rank[x] > rank[y] ) p[y] = x; else { p[x] = y; if( rank[x] == rank[y] ) rank[y]++; } else flag = 0; } int main() { int a,b; while( scanf("%d%d",&a,&b)==2 ,( a!=-1 || b!=-1 ) ) { if( !a || !b ) { puts("Yes"); continue; } for( int i = 0; i < maxn; i ++ ) { p[i]= i; vis[i]=0; rank[i] = 0; } vis[a] = vis[b] = 1; flag = 1; merge(a,b); while( scanf("%d%d",&a,&b)==2,(a||b) ) { merge(a,b); vis[a] = vis[b] = 1; } int k = 0; for( int i = 1; i < maxn; i ++ ) { if( vis[i] && p[i]==i ) { k++; } if( k>1 ) flag = 0; } if( flag ) puts("Yes"); else puts("No"); } return 0; }
相关文章推荐
- hdu 1272 小希的迷宫(并查集)
- hdu 1272 小希的迷宫(并查集)
- HDU 1272 小希的迷宫(并查集)
- HDU 1272 小希的迷宫 并查集
- HDU 1272 小希的迷宫 (简单并查集)
- HDU 1272 小希的迷宫(并查集)
- hdu1272 - 小希的迷宫 (基础并查集)
- 【并查集】hdu 1272 小希的迷宫
- HDU - 1272 小希的迷宫(看似并查集的水题)
- HDU 1272 小希的迷宫 并查集 (判断任意2个点是否有且仅有一条路径可以相通)
- 【HDU】-1272-小希的迷宫(并查集)
- HDU 1272 小希的迷宫【并查集判断无向图回路】
- hdu1272 小希的迷宫(并查集)
- hdu 1272 小希的迷宫(并查集判断回路和是否连通)
- hdu 1272小希的迷宫 并查集
- 【并查集】 HDU 1272 小希的迷宫
- hdu 1272 小希的迷宫 并查集->如何判断是否组成一串 即一棵树
- HDU 1272 小希的迷宫 (并查集)
- hdu-1272小希的迷宫(并查集)
- HDU 1272 小希的迷宫 并查集 (判断任意2个点是否有且仅有一条路径可以相通)