题目大意
给出一棵族谱树,问从从根节点的最顶层到最底层,每一层的叶子数是多少
解题思路
#include<bits/stdc++.h>
using namespace std;
const int maxn=101;
vector<vector<int>>tree(maxn);
int Level_leaf[maxn],maxDeep=-1;
int n,m;
void dfs(int f,int deep){
maxDeep=maxDeep<deep?deep:maxDeep;
if(tree[f].empty()) ++Level_leaf[deep];
for(int son:tree[f]) dfs(son,deep+1);
}
int main(){
while(~scanf("%d",&n)){
if(n==0) break;
scanf("%d",&m);
int id,k,son;
for(int i=0;i<m;++i){
scanf("%d%d",&id,&k);
for(int j=0;j<k;++j){
scanf("%d",&son);
tree[id].push_back(son);
}
}
dfs(1,0);
for(int i=0;i<=maxDeep;++i){
if(i==0) printf("%d",Level_leaf[i]);
else printf(" %d",Level_leaf[i]);
}
printf("\n");
}
return 0;
}