分析:建树,分析每一层上叶子结点的个数。
利用vector进行存储,bfs进行搜索,book[i]记录每一层叶子结点的个数。
#include<iostream>
#include<vector>
#include<queue>
using namespace std;
int n,m,k,level[220],maxLevel,node;
vector<int> ve[220];
int book[220];
void bfs(){
queue<int> que;que.push(1);while(!que.empty()){
int q1,q2,q3;q1=que.front();que.pop();maxLevel=max(level[q1],maxLevel); //记录当前最大深度if(ve[q1].size()==0) {
book[level[q1]]++;}for(int i=0;i<ve[q1].size();i++){
que.push(ve[q1][i]);level[ve[q1][i]]=level[q1]+1;}}
}
int main(){
std::ios::sync_with_stdio(false);cin>>n>>m;for(int i=0;i<m;i++){
cin>>node>>k;for(int j=0;j<k;j++){
int tmp;cin>>tmp;ve[node].push_back(tmp);}}bfs();for(int i=0;i<=maxLevel;i++){
cout<<book[i];if(i!=maxLevel) cout<<" ";else cout<<endl;}return 0;
}