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 }

 

posted @ 2021-09-05 11:30  Rekord  阅读(103)  评论(0编辑  收藏  举报