给定一棵树,输出树的根 root、孩子结点最多的结点 max 以及它的孩子结点。
输入格式:
第 1 行输入 n(结点数≤100)和m(边数≤200)。以下 m 行输入每行两个结点 x 和 y,表示 y 是 x 的孩子结点(x,y≤1000)。
输出格式:
第 1 行是树根 root。第 2 行是孩子结点最多的结点 max。第 3 行是 max 的孩子结点。
输入样例:
8 7
4 1
4 2
1 3
1 5
2 6
2 7
2 8
输出样例:
4
2
6 7 8
01 #include<bits/stdc++.h>
02 using namespace std;
03 int n,m,tree[105]={0};
04 int main()
05 {
06 int i,x,y,root,maxroot,sum=0,j,Max=0;
07 cin>>n>>m;
08 for(i=1;i<=m;i++)
09 {
10 cin>>x>>y;
11 ①;
12 }
13 for(i=1;i<=n;i++) //找出树的根
14 if(②)
15 {
16 root=i;
17 ③;
18 }
19 for(i=1;i<=n;i++) //找孩子结点最多的结点
20 {
21 sum=0;
22 for(j=1;j<=n;j++)
23 if(tree[j]==i)
24 sum++;
25 if(④)
26 {
27 Max=sum;
28 maxroot=i;
29 }
30 }
31 cout<<root<<endl<<maxroot<<endl;
32 for(i=1;i<=n;i++)
33 if(⑤)
34 cout<<i<<" ";
35 return 0;
36 }