代码:
#include<iostream>
#include<vector>
using namespace std;
vector<int> v[1000];
int leafnum[1000];//每层叶子节点个数
int maxdep=-1;
void dfs(int node,int dep){
//如果该节点的子节点个数为0,说明是叶节点
if(v[node].size()==0){
leafnum[dep]++;
if(dep>maxdep){
maxdep=dep;
}
return;
}
for(int i=0;i<v[node].size();i++){
dfs(v[node][i],dep+1);
}
}
int main(){
int n,m,id,k;
cin>>n>>m;
while(m--){
cin>>id>>k;
while(k--){
int temp;
cin>>temp;
v[id].push_back(temp);
}
}
dfs(1,0);
cout<<leafnum[0];
for(int i=1;i<=maxdep;i++){
cout<<" "<<leafnum[i];
}
;
}