#include<cstdio>
#include<vector>
using namespace std;
const int maxn = 110;
int n, m, k;
vector<int> v[maxn];
int level[maxn] = { 0 };
int maxdepth = -1;
void dfs(int root,int depth)
{
if (v[root].size() == 0)
{
if (depth > maxdepth) maxdepth = depth;//记录存在叶子结点的最大深度
level[depth]++;
return;
}
for (int i = 0; i < v[root].size(); i++)
{
dfs(v[root][i], depth + 1);
}
}
int main()
{
int k, id,temp;
scanf("%d %d", &n, &m);
for (int i = 0; i < m; i++)
{
scanf("%d %d", &id, &k);
for (int i = 0; i < k; i++)
{
scanf("%d", &temp);
v[id].push_back(temp);
}
}
dfs(1, 0);
for (int i = 0; i <= maxdepth; i++)
{
printf("%d", level[i]);
if (i != maxdepth) printf(" ");
}
return 0;
}
A1004 Counting Leaves (30 分)
最新推荐文章于 2022-11-13 18:38:07 发布