【题目描述】
给定一棵树,输出树的根root,孩子最多的结点max以及他的孩子。
【输入】
第一行:n(结点个数≤100),m(边数≤200)。
以下m行:每行两个结点x和y,表示y是x的孩子(x,y≤1000)。
【输出】
第一行:树根:root;
第二行:孩子最多的结点max;
第三行:max的孩子(按编号由小到大输出)。
【输入样例】
8 7
4 1
4 2
1 3
1 5
2 6
2 7
2 8
【输出样例】
4
2
6 7 8
是一道找树根的题
但不仅仅是找树根
AC代码
#include<bits/stdc++.h>
using namespace std;
vector<int> c[1005];
int f[1005],s[1005];
int main()
{
int n,i,x,y,maxn=0,t,o,m;
cin>>n>>m;
for(i=1;i<=m;i++)
{
cin>>x>>y;
c[x].push_back(y);
f[y]=x;
}
for(i=1;i<=1000;i++)
{
if(f[i]==0&&c[i].size()!=0)
{
o=i;
}
if(c[i].size()>=maxn)
{
maxn=c[i].size();
t=i;
}
}
cout<<o<<endl<<t<<endl;
sort(c[t].begin(),c[t].end());
for(i=0;i<c[t].size();i++)
{
cout<<c[t][i]<<" ";
}
}