题目描述:
题目思路:
题目的主要意思就是让你求出哪一层数最多并输出数目和层数
首先看样例,如图所示,数最多的是第四层,并有9个数,那我们就可以用一个数组来统计一下每一层的数量并找出最大的即可,使用深搜就非常容易实现。
代码:
#include <bits/stdc++.h>
using namespace std;
vector<int>v[110];
int r[110],m,n,k,id,u,cnt,c=-1;
void dfs(int val,int count)
{
r[count]++;//统计每一层的个数
if(r[count]>m)//找最大值并更新
{
m=r[count];
cnt=count;
}
for(int i=0;i<v[val].size();i++)
{
dfs(v[val][i],count+1);
}
}
int main()
{
cin>>n>>m;
for(int i=1;i<=m;i++)
{
cin>>id>>k;
for(int j=1;j<=k;j++)
{
cin>>u;
r[u]++;
v[id].push_back(u);
}
}
for(int i=1;i<=n;i++)
{
if(r[i]==0)
{
c=i;
}
r[i]=0;
}
m=0;//m为最大值
dfs(c,1);
cout<<m<<" "<<cnt;
return 0;
}