PAT第二天

1004 Counting Leaves

解题思路:利用深度优先搜索,遍历树

#include<iostream>
#include<vector>
using namespace std;

int n,m,maxlevel,numEachleval[100]={0};
vector<int>child[100];

void dfs(int curid,int curlevel){
    if(curlevel>maxlevel)maxlevel=curlevel;
    if(child[curid].size()>0){
        for(auto x:child[curid]){
            dfs(x,curlevel+1);
        }
    }
    else{
        numEachleval[curlevel]++;
    }
}


int main(){
    cin>>n>>m;
    for(int i=0;i<m;i++){
        int id,j,k;
        cin>>id>>k;
        while(k--){
            cin>>j;
            child[id].emplace_back(j);
        }
    }
    dfs(1,1);
    for(int i=1;i<=maxlevel;i++){
        if(i>1)cout<<' ';
        cout<<numEachleval[i];
    }
}

  

 

posted @ 2023-01-16 23:17  jerry-autumn  阅读(14)  评论(0)    收藏  举报