【问题描述】
给定一棵树,输出树的根root,孩子最多的结点max以及他的孩子
【输入格式】
第一行:n(结点数<=100),m(边数<=200)。
以下m行;每行两个结点x和y,表示y是x的孩子(x,y<=1000)。
【输出格式】
第一行:树根:root。
第二行:孩子最多的结点max。
第三行:max的孩子,按照从小到大的顺序输出。
【输入样例】
9 8 1 2 1 3 1 4 2 5 2 6 7 8 7 9 4 7
【输出样例】
1 1 2 3 4
#include<bits/stdc++.h>
using namespace std;
struct node{
int data;
int father;
int sonnum=0;
int son[10000];
};
node tree[10000];
int n,m,x,y,a=INT_MIN;
int main(){
cin>>n>>m;
for(int i=0;i<m;i++){
cin>>x>>y;
tree[y].father=x;
a=max(a,x);
tree[x].son[tree[x].sonnum+1]=y;
tree[x].sonnum++;
}
for(int i=1;i<=a;i++){
if(tree[i].father==0){
cout<<i<<endl;
break;
}
}
int b=INT_MIN,c;
for(int i=0;i<=a;i++){
if(tree[i].sonnum>b){
c=i;
b=tree[i].sonnum;
}
}
cout<<c<<endl;
sort(tree[c].son,tree[c].son+b);
for(int i=1;i<=b;i++){
cout<<tree[c].son[i]<<' ';
}cout<<endl;
return 0;
}
标签:结点,树根,孩子,sonnum,tree,C++,int,max From: https://blog.csdn.net/qxh10/article/details/140495357