首页 > 其他 > 详细

Is It A Tree?----poj1308

时间:2015-07-26 17:02:35      阅读:193      评论:0      收藏:0      [点我收藏+]

http://poj.org/problem?id=1308

 

#include<stdio.h>
#include<string.h>
#include<iostream>
#include<algorithm>
#include<math.h>
#define N 110
#define INF 0xfffffff
using namespace std;

int f[N],vis[N];

int Find(int x)
{
    if(x!=f[x])
        f[x]=Find(f[x]);
    return f[x];
}

int main()
{
    int a,b,t=1,pa,pb,flag,i,first;
    while(scanf("%d%d",&a,&b),a!=-1||b!=-1)
    {
        for(i=0;i<N;i++)
            f[i]=i;
        memset(vis,0,sizeof(vis));
        flag=0;
        if(a==0&&b==0)
        {
            printf("Case %d is a tree.\n",t++);//空树也是树;
            continue;
        }
        vis[a] = vis[b] = 1;//说明此点出现过;
        first = a;
        if(a == b) flag = 1;
        pa = Find(a);
        pb = Find(b);
        if(pa != pb)
            f[pb] = pa;
        else
            flag = 1;
        while(scanf("%d%d", &a, &b), a+b)
        {
            vis[a] = vis[b] = 1;
            if(a == b) flag = 1;
            pa = Find(a);
            pb = Find(b);
            if(pa != pb)
                f[pb]=pa;
            else
            {
                flag=1;
            }
        }
        for(i=1; i<N; i++)
        {
            if(vis[i]==1 && Find(i) != Find(first))
            {
                flag=1;break;
            }
        }
        if(flag==1)
            printf("Case %d is not a tree.\n",t++);
        else
            printf("Case %d is a tree.\n",t++);
    }
    return 0;
}

 

Is It A Tree?----poj1308

原文:http://www.cnblogs.com/zhengguiping--9876/p/4677848.html

(0)
(0)
   
举报
评论 一句话评论(0
关于我们 - 联系我们 - 留言反馈 - 联系我们:wmxa8@hotmail.com
© 2014 bubuko.com 版权所有
打开技术之扣,分享程序人生!