刷的前四道都可以用dfs搞定还是牛客网的顺序就是按类排的 啊啊
题意:
那就是给你一棵以1为根的树 问哪一层的结点数最多 输出最大结点数和层数
DFS
#include <cstdio>
#include <algorithm>
#include <math.h>
#include <string.h>
#include <vector>
#include <map>
#include <iostream>
#define ll long long
#define INF 0x3f3f3f
using namespace std;
const int N=1000+500;
vector<int> v[N];
int cnt[N];
void dfs(int x,int h)
{
int i;
cnt[h]++;
for(i=0;i<v[x].size();i++)
dfs(v[x][i],h+1);
}
int main()
{
int n,m,i,j,k,id,anscnt,ansh,x;
scanf("%d%d",&n,&m);
for(i=1;i<=m;i++)
{
scanf("%d%d",&id,&k);
for(j=1;j<=k;j++)
{
scanf("%d",&x);
v[id].push_back(x);
}
}
dfs(1,1);
anscnt=-1;
for(i=1;i<=101;i++)
{
if(cnt[i]>anscnt)
{
anscnt=cnt[i];
ansh=i;
}
}
printf("%d %d\n",anscnt,ansh);
}