用什么并查集啊!!
树的定义白学了嘛!!!
根节点没有入度,其他节点有且仅有一个入度(唯一的父亲)
特判树没有节点的时候,这个很坑
#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] ]++; } } }