#include<bits/stdc++.h>
using namespace std;
int main(){
int n,m;
scanf("%d %d",&n,&m);
int a[101],b[101]={0};
for(int i=1;i<=n;i++)
a[i]=i;
for(int i=0;i<m;i++){
int p,N;
scanf("%d %d",&p,&N);
b[p]=1;//记录非叶子节点
for(int j=0;j<N;j++){
int o;
scanf("%d",&o);
a[o]=p;
}
}
int c[101]={0},M=0;
for(int i=1;i<=n;i++)
if(!b[i]){//叶子节点并查集搜索在第几层
int t=i,T=0;
while(t!=a[t]){
T++;
t=a[t];
}
M=max(M,T);//记录最大层数
c[T]++;
}
for(int i=0;i<=M;i++)
printf("%s%d",(i==0?"":" "),c[i]);
return 0;
}
1004 Counting Leaves
最新推荐文章于 2022-03-03 00:02:16 发布