///基本思路:判断是否满足一棵树的条件:每个节点入度为0获入度为1,n个节点有n-1条边即可,因此读数据的顺便记录节点的入度和节点的个数,边的个数即可
#include <iostream>
#include <cstdio>#include <cstring>
#define MAX 10000
using namespace std;
bool f[MAX];
int flag[MAX];
int pos[MAX];
int en;///边的个数
int nn;///结点的个数
int T=1;
int main()
{
int a,b;
while(scanf("%d%d",&a,&b)==2&&(a!=-1||b!=-1))
{
nn=1;
en=0;
memset(f,0,sizeof(f));
memset(flag,0,sizeof(flag));///初始化
while(a!=0||b!=0)
{
if(!f[a])
{
pos[a]=nn;
nn++;
f[a]=true;
}
if(!f[b])
{
pos[b]=nn;
nn++;
f[b]=true;
}
flag[pos[b]]++;
en++;
scanf("%d%d",&a,&b);
}
int i;
for(i=1; i<nn; i++)
{
if(!(flag[i]==1||flag[i]==0))
break;
}
if((i==nn&&nn-1==en+1)|| (nn==1))///边界情况
{
printf("Case %d is a tree.\n",T);
}
else
printf("Case %d is not a tree.\n",T);
T++;
}
return 0;
}