hdu_1272 小希的迷宫
2015-05-04 20:23
274 查看
#include <iostream> #include <cstdio> #include <cmath> #include <algorithm> #include <cstring> using namespace std; #define N 100005 int Father ; int visit ; void Make_set(int n) { for(int i=0; i<=n; i++) Father[i] = i; } int Find_set(int x) { int pre,temp,ans; pre = x; while(x != Father[x]) { x = Father[x]; } ans = x; while(pre != Father[pre]) { temp = Father[pre]; Father[pre] = ans; pre = temp; } return ans; } void Union_set(int a,int b) { int x = Find_set(a); int y = Find_set(b); Father[y] = x; } int main() { int n,m,i,j,k,temp1,temp2,flag,sum; while(cin>>temp1>>temp2) { memset(visit,0,sizeof(visit)); visit[temp1] = visit[temp2] = 1; Make_set(N); flag = 0, sum = 0; if(temp1==-1&&temp2==-1) break; if(temp1==0&&temp2==0) { cout<<"Yes"<<endl; continue; } if(Find_set(temp1)==Find_set(temp2)) flag = 1; else Union_set(temp1,temp2); while(cin>>n>>m) { if(n==0&&m==0) break; visit = visit[m] = 1; if(flag) continue; if(Find_set(n)==Find_set(m) || n==m) flag = 1; else Union_set(n,m); //cout<<Find_set(n)<<" "<<Find_set(m)<<endl; } for(i=1;i<=N;i++) if(visit[i] && i == Find_set(i)) sum++; if(!flag&&sum==1) cout<<"Yes"<<endl; else cout<<"No"<<endl; } return 0; }
相关文章推荐
- hdu 1272 小希的迷宫
- HDU 1272 小希的迷宫(并查集)
- HDU 1272 小希的迷宫
- HDU1272---小希的迷宫
- HDU 1272-小希的迷宫 并查集初级
- hdu-1272 小希的迷宫
- HDU 1272 小希的迷宫
- hdu 1272 小希的迷宫 并查集
- hdu 1272 小希的迷宫
- HDU 1272 小希的迷宫
- HDU 1272 小希的迷宫 题解
- hdu 1272 小希的迷宫
- HDU-1272 小希的迷宫 (并查集)
- HDU--1272 -- 小希的迷宫 [并查集] [连通图]
- hdu 1272 小希的迷宫
- HDU-1272 小希的迷宫(并查集判断输入的数据是否能成为一颗树)
- HDU 1272 小希的迷宫 (水题)
- HDU - 1272 小希的迷宫(并查集)
- hdu 1272小希的迷宫
- hdu 1272 小希迷宫 (并查集)