hdu 1272 小希的迷宫

来源:互联网 发布:用c语言编写一个图形 编辑:程序博客网 时间:2024/05/29 10:19

题目:http://acm.hdu.edu.cn/showproblem.php?pid=1272


是中文题啊,所以题意很清晰,仔细阅读就可以啦微笑微笑微笑


代码如下:

<span style="font-size:12px;"></span>
<span style="font-size:12px;">#include<cstdio></span>
<span style="font-size:12px;">#include<cstring></span>
<span style="font-size:12px;">#include<cmath></span>
<span style="font-size:12px;">#include<algorithm></span>
<span style="font-size:12px;">using namespace std;</span>
<span style="font-size:12px;">#define N 1000005int pre[N],a[N],b[N];int flag,ans;int find(int x){    return pre[x]==x?x:find(pre[x]);} void join(int x,int y){    int fx=find(x);    int fy=find(y);    if(fx!=fy)        pre[fx]=fy;    else flag=1;}int main(){    int i,k,m;    while(~scanf("%d%d",&a[1],&b[1]))    {        ans=-1;        if(a[1]==-1 && b[1]==-1) break;        if(a[1]==0 && b[1]==0)  printf("Yes\n");                if(a[1]>ans) ans=a[1];  //ans统计点个数         if(b[1]>ans) ans=b[1];        k=2;        while(~scanf("%d%d",&a[k],&b[k]))        {             if(a[k]==0 && b[k]==0) break;             if(a[k]>ans) ans=a[k];             if(b[k]>ans) ans=b[k];           k++;        }        for(i=1;i<=ans;i++)             pre[i]=i;        flag=0;        for(i=1;i<k;i++)                 join(a[i],b[i]);        if(flag) printf("No\n");        else        {            m=find(a[1]);            for(i=1;i<k;i++)            {                if(find(a[i])!=m||find(b[i])!=m)  {  flag=1;break;        }            }            if(flag) printf("No\n");            else printf("Yes\n");        }    }    return 0;}</span>  


0 0
原创粉丝点击