#include <stdio.h>
#include <string.h>
int set[100001];
int visited[100001];
int find(int x)
{
int r=x;
/* while(r!=set[r])
r=set[r];
return r;*/
return x == set[x] ? x :set[x] = find(set[x]);
}
void merge(int x,int y)
{
int fx,fy;
fx=find(x);
fy=find(y);
if(fx<fy)
set[fx]=fy;
else
set[fy]=fx;
}
int main()
{
int x,y,sign,i,count,k;
while(1)
{
for(i=1;i<=100000;i++)
set[i]=i;
memset(visited,0,sizeof(visited));
sign=1;
count=0;
k=0;
while(scanf("%d%d",&x,&y)!=EOF)
{
visited[x]=1;
visited[y]=1;
if((x==0&&y==0)||(x==-1&&y==-1))
break;
if(find(x)==find(y))
{
sign=0;
}
else
merge(x,y);
}
if(x==-1&&y==-1)
break;
for(i=1;i<=100000;i++)
{
if(visited[i]&&set[i]==i)
count++;
if(visited[i]!=0)
k++;
}
if(k==0)
printf("Yes\n");
else if(sign&&count==1)
printf("Yes\n");
else
printf("No\n");
}
return 0;
}
hdu1272 小希的迷宫
最新推荐文章于 2023-03-27 22:29:20 发布