#include <iostream>
#include <vector>
using namespace std;
const int maxN=100010;
vector<int> Node[maxN];
int N,M;
int number[maxN] = {0};
int maxH = -1;
void DFS(int index,int depth){
if(depth>maxH){
maxH = depth;
}
if(Node[index].size()==0){
number[depth]++;
return;
}
for(int i=0;i<Node[index].size();i++){
DFS(Node[index][i],depth+1);
}
}
int main() {
cin>>N>>M;
for(int i=0;i<M;i++){
int number,sum;
cin>>number>>sum;
for(int j=0;j<sum;j++){
int child;
cin>>child;
Node[number].push_back(child);
}
}
DFS(1,0);
cout<<number[0];
for(int i=1;i<=maxH;i++){
cout<<" "<<number[i];
}
}
出现段错误肯定是 main函数里的条件写错了。