标签:

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
Yes Yes No
#include<cstdio>
#include<iostream>
#include <cstring>
#include<set>
using namespace std;
#define maxn 1000001
int father[maxn];
void init()
{
for(int i=0;i<maxn;i++)
father[i]=i;
}
int Find(int x)
{
return x==father[x]?x:father[x]=Find(father[x]);
}
void Union(int x,int y)
{
int fx=Find(x);
int fy=Find(y);
if(fx!=fy)
father[fy]=fx;
}
int main()
{
//freopen("in.txt", "r", stdin);
int a,b;
set<int> s;
set<int>::iterator ite;;
while(scanf("%d%d",&a,&b)!=EOF&&(a!=-1&&b!=-1))
{
int c=1;
init();
s.clear();
int flag=1;
if(a==0&&b==0)
{
cout<<"Yes"<<endl;
continue;
}
s.insert(a);
s.insert(b);
Union(a,b);
while(scanf("%d%d",&a,&b)!=EOF)
{
if(a==0&&b==0)
{
for(ite=s.begin();ite!=s.end();ite++)
if(*ite==father[*ite])
c++;
break;
}
else{
if(Find(a)==Find(b))
flag=0;
else
Union(a,b);
}
}
if(!flag||c!=1)
cout<<"No"<<endl;
else
cout<<"Yes"<<endl;
}
return 0;
}标签:
原文地址:http://blog.csdn.net/novak_djokovic/article/details/44810991