1336:【例3-1】找树根和孩子
第一道树!!!(#^.^#)
题目有一个隐含条件:结点值小于等于100
1 #include<iostream> 2 #include<algorithm> 3 using namespace std; 4 const int N=105; 5 int maxx,tree[N]; 6 int main(){ 7 int n,m,x,y,mr; 8 cin>>n>>m; 9 for(int i=1;i<=m;i++){ 10 cin>>x>>y; 11 tree[y]=x; 12 } 13 //找根节点,依据根节点没有父节点这一特性 14 for(int i=1;i<=n;i++){ 15 if(!tree[i]){ 16 cout<<i<<endl; 17 break; 18 } 19 } 20 //遍历所有节点,找出每个节点的子节点数量 21 for(int i=1;i<=n;i++){ 22 int sum=0; 23 for(int j=1;j<=n;j++) 24 if(tree[j]==i)sum++; 25 if(sum>maxx){ 26 maxx=sum; 27 mr=i; 28 } 29 } 30 cout<<mr<<endl; 31 for(int i=1;i<=n;i++) 32 if(tree[i]==mr)cout<<i<<" "; 33 return 0; 34 }