#include<bits/stdc++.h>
using namespace std;
const int N = 107;
struct le{
int l;
vector<int>child;
}s[N];
//创建结构体,包含层次和孩子们
int lea[N];
int main()
{
ios::sync_with_stdio(false);
cin.tie(0);
cout.tie(0);
int n,m;
cin>>n>>m;
for(int i=1;i<=m;i++)
{
int k,l;
cin>>k>>l;
for(int j=1;j<=l;j++)
{
int x;
cin>>x;
s[k].child.push_back(x);
}
}
//第一层是1所以先进行初始化,赋值第一层,放入队列
queue<int>q;
q.push(1);
s[1].l=1;
int mx=1;
//记录层次
while(!q.empty())
{
int t=q.front();
if(s[t].l!=mx)mx++;
//一旦发现不是最大层数了,那么就表示最大层数是需要更新
if(s[t].child.size()==0)lea[mx]++;//出现叶子节点,该层的叶子节点数增加一个
for(auto k:s[t].child)
{
s[k].l=mx+1;//更新层数
q.push(k);
}
q.pop();
}
for(int i=1;i<=mx;i++)
{
if(i!=1)cout<<" ";
cout<<lea[i];
}
return 0;
}
1004 Counting Leaves
于 2023-02-08 10:38:57 首次发布