当前位置: 代码迷 >> 综合 >> PAT1004 Counting Leaves(每一层叶子结点的个数)
  详细解决方案

PAT1004 Counting Leaves(每一层叶子结点的个数)

热度:48   发布时间:2023-11-08 14:51:25.0

分析:建树,分析每一层上叶子结点的个数。
利用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;
}