HDU1272

来源:互联网 发布:阿特金斯减肥法 知乎 编辑:程序博客网 时间:2024/04/29 01:06

//先记录下来。。暂时

#include<iostream>#include<string.h>using namespace std;int pre[100005],flag;int visit[100005];void init(){    int i;    for(i=1;i<=100000;i++)        pre[i]=i;}int find(int x){    if(pre[x]==x)        return x;    else        return pre[x]=find(pre[x]);}void hbing(int x,int y){    x=find(x);    y=find(y);    if(x==y)        return ;    else        pre[x]=y;}int main(){    int n,m;    while(scanf("%d%d",&n,&m),n!=-1,m!=-1)    {        if(n==0&&m==0)        {            char c;            scanf("%c",&c);            scanf("%c",&c);            cout<<"Yes"<<endl;        }        else        {            flag=0;            init();            memset(visit,0,sizeof(visit));            visit[n]=1;            visit[m]=1;            hbing(n,m);            int i,a,b,number=0,max1=-1;            for(i=1;;i++)            {                scanf("%d%d",&a,&b);                if(max1<a)                    max1=a;                if(max1<b)                    max1=b;                visit[a]=1;                visit[b]=1;                if(a==0&&b==0)                {                    i--;                    break;                }                int x=find(a);//关键                int y=find(b);//关键                if(x==y)                    flag=1;                else                    hbing(x,y);                            }            for(i=1;i<=max1;i++)            {                if(visit[i]==1)                {                    if(pre[i]==i)                        number++;                }            }            char c;            scanf("%c",&c);            scanf("%c",&c);            if(flag==1||number>=2)                cout<<"No"<<endl;            else                cout<<"Yes"<<endl;        }            }}


0 0