水~。
题意
输入树的结点个数N (结点编号为1~N)、非叶子结点个数M,然后输入M个非叶子结点各自的孩子结点编号,求结点个数最多的一层(层号是从整体来看的,根结点层号为1),输出该层的结点个数以及层号。
const int N=110;
vector<int> g[N];
int cnt[N];
int maxdep;
int n,m;
void dfs(int root,int dep)
{
maxdep=max(maxdep,dep);
cnt[dep]++;
if(g[root].size() == 0)
{
return;
}
for(int i=0;i<g[root].size();i++)
{
int j=g[root][i];
dfs(j,dep+1);
}
}
int main()
{
cin>>n>>m;
while(m--)
{
int id;
int k;
cin>>id>>k;
for(int i=0;i<k;i++)
{
int x;
cin>>x;
g[id].pb(x);
}
}
dfs(1,1);
int maxidx=1;
for(int i=1;i<=n;i++)
if(cnt[i] > cnt[maxidx])
maxidx=i;
cout<<cnt[maxidx]<<' '<<maxidx<<endl;
//system("pause");
return 0;
}