用什么并查集啊!!
树的定义白学了嘛!!!
根节点没有入度,其他节点有且仅有一个入度(唯一的父亲)
特判树没有节点的时候,这个很坑
#include <iostream>
#include <algorithm>
#include <map>
using namespace std;
map<int,int>mp;
int n,m,in[10000009],id,k=1,l,r;
int main()
{
while( cin >> l >> r )
{
if( l+r==-2 ) break;
if( l+r==0 )
{
int q=0,w=0,flag=0;
for(int i=1;i<=id;i++)
{
if( in[i]==1 ) q++;
if( in[i]==0 ) w++;
}
if( w==1&&q==id-1 ) flag=1;
if( id==0 ) flag=1;
if( flag ) cout << "Case " << k << " is a tree.\n";
else cout << "Case " << k << " is not a tree.\n";
for(int i=1;i<=id;i++) in[i]=0;
mp.clear(); id=0; k++;
}
else
{
if( !mp[l] ) mp[l]=++id;
if( !mp[r] ) mp[r]=++id;
in[ mp[r] ]++;
}
}
}
京公网安备 11010502036488号