#include <iostream>
#include <string.h>
#include <stdlib.h>
#include <stdio.h>
using namespace std;
#define MAXN 111111
int fa[MAXN];
int node[MAXN];
bool flag = 1;
int findfa( int x)
{
if(fa[x] == -1) return x;
return fa[x] = findfa(fa[x]);
}
void unit( int x, int y)
{
if(y != findfa(y))
{
flag = 0;
return ;
}
int fax = findfa(x);
int fay = findfa(y);
if(fax == fay)
{
flag = 0;
return ;
}
fa[fay] = fax;
}
int main()
{
int a, b;
int ca = 1;
while(scanf("%d %d",&a, &b) != EOF)
{
memset(fa, -1, sizeof(fa));
if(a == -1 && b == -1) break;
flag = 1;
int cnt = 0;
node[cnt++] = a;
node[cnt++] = b;
if(a == 0 && b == 0)
{
printf("Case %d is a tree.\n", ca ++);
continue;
}
if(a == b)
flag = 0;
unit(a, b);
while(1)
{
//cout<<flag<<endl;
scanf("%d %d",&a, &b);
if(a == b && a == 0)
break;
else if(a == b)
flag = 0;
unit(a, b);
node[cnt++] = a;
node[cnt++] = b;
}
int fax = findfa(node[0]);
for(int i = 1; i < cnt; i++)
{
if(findfa(node[i]) != fax)
{
flag = 0;
break;
}
}
if(!flag)
printf ("Case %d is not a tree.\n",ca++);
else
printf ("Case %d is a tree.\n",ca++);
}
return 0;
}
Is It A Tree?
最新推荐文章于 2022-02-02 10:40:06 发布