数据结构 并查集 HDU 1272

来源:互联网 发布:映射网络文件夹 编辑:程序博客网 时间:2024/05/16 11:08
#include <iostream>#include <string.h>#include <cstdio>using namespace std;int bin[100010];int vis[100010];int findx(int x){int r=x;while(bin[r] != r)r=bin[r];return r;}int in(int x,int y){int fx,fy;fx=findx(x);fy=findx(y);if(fx!=fy){bin[fx]=fy;return 1;}else return 0;}int main(){int n,m;int i,j;int max,min;int flag,count;while (cin>>n>>m && n!=-1 &&  m!=-1){flag=1,count=0;if(n == 0 && m == 0){cout<<"Yes"<<endl;continue;}for(i=1;i<=100010;i++){bin[i]=i;vis[i]=0;}min=99999999,max=-1;while(n || m){if(n>max) max=n;if(m>max) max=m;if(n<min) min=n;if(m<min) min=m;vis[n]=1;vis[m]=1;if(in(n,m) == 0)flag=0;cin>>n>>m;}if(flag == 0)cout<<"No"<<endl;else{for(i=min;i<=max;i++)if(vis[i] && bin[i] == i)count++;if(count == 1)cout<<"Yes"<<endl;else cout<<"No"<<endl;}}return 0;}

0 0
原创粉丝点击