#include<bits/stdc++.h>
using namespace std;
map<int ,vector<int> > vec;
int totalnum[100] = {0};
int depth = 0;
int maxdepth = 0;
void bfs(int root , int depth){
if(depth > maxdepth)
maxdepth = depth;
int size = vec[root].size();
if(size == 0){
totalnum[depth]++;
return;
}
else{
for(int i = 0 ; i < size ; i++){
int depth1 = depth+1;
bfs(vec[root][i],depth1);
}
}
}
int main(){
int n ,m ;
cin>>n>>m;
for(int i = 0 ; i < m ; i++){
int index,num;
cin>>index>>num;
for(int k = 0 ; k < num ; k++){
int child;
cin>>child;
vec[index].push_back(child);
}
}
//广度优先遍历
// queue<int> q;
// q.push(1);
// int last ,end;
// end = 1;
// int elem;
// while(!q.empty()){
// last = q.front();
// q.pop();
// if(vec[last].size() == 0){
// totalnum[depth]++;
// }else{
// for(int i = 0 ; i < vec[last].size(); i++){
// elem = vec[last][i];
// q.push(elem);
// }
// }
// if(last == end){
// depth++;
// end = elem;
// }
// }
// printf("%d",totalnum[0]);
// for(int i = 1 ; i < depth ; i ++){
// printf(" %d",totalnum[i]);
// }
//深度优先遍历
bfs(1,depth);
printf("%d",totalnum[0]);
for(int i = 1 ; i <= maxdepth ; i++){
printf(" %d",totalnum[i]);
}
}
1004 Counting Leaves (30 分)
最新推荐文章于 2024-07-24 22:13:06 发布