自己的代码23/25
#include <bits/stdc++.h>
using namespace std;
struct node
{
int id;
vector<int> child;
};
vector<node> v;
int cnt[20] = {0};
void dfs(int index,int level)
{
if(v[index].child.size() == 0) return;
cnt[level]+=v[index].child.size();
for(int i=0;i<v[index].child.size();i++)
dfs(v[index].child[i],level+1);
}
int main()
{
int n,m;
cin >> n >> m;
v.resize(n+1);
for(int i=1;i<=n;i++) v[i].id = i;
for(int i=0;i<m;i++)
{
int a,k,b;
scanf("%d %d",&a,&k);
for(int j=0;j<k;j++)
{
scanf("%d",&b);
v[a].child.push_back(b);
}
}
dfs(1,2);
int index,maxx=0;
for(int i=0;i<20;i++)
{
if(cnt[i] > maxx)
{
maxx = cnt[i];
index = i;
}
}
printf("%d %d",maxx,index);
return 0;
}
柳神
#include <cstdio>
#include <vector>
using namespace std;
vector<int> v[100];
int book[100];
void dfs(int index, int level) {
book[level]++;
for(int i = 0; i < v[index].size(); i++)
dfs(v[index][i], level+1);
}
int main() {
int n, m, a, k, c;
scanf("%d %d", &n, &m);
for(int i = 0; i < m; i++) {
scanf("%d %d",&a, &k);
for(int j = 0; j < k; j++) {
scanf("%d", &c);
v[a].push_back(c);
}
}
dfs(1, 1);
int maxnum = 0, maxlevel = 1;
for(int i = 1; i < 100; i++) {
if(book[i] > maxnum) {
maxnum = book[i];
maxlevel = i;
}
}
printf("%d %d", maxnum, maxlevel);
return 0;
}