pat -1004(樹的遍歷)
阿新 • • 發佈:2018-12-04
題目連結:https://pintia.cn/problem-sets/994805342720868352/problems/994805521431773184
思路:
(1)用vector記錄每個非葉子節點的子節點
(2)通過dfs記錄每一層的節點的個數,並記錄最高層的節點數量
(3)從0開始,遍歷每一層。
#include<iostream> #include<cstdio> #include<cstring> #include<vector> using namespace std; vector <int> vc[120View Code]; int maxlevel,n,vis[120]; void dfs(int x,int level) { if(vc[x].size()==0) { maxlevel=maxlevel>level?maxlevel:level; vis[level]++; return ; } for(int i=0;i<vc[x].size();i++) { dfs(vc[x][i],level+1); } } int main(void) { int n,i,j,m,k,id,y; cin>>n; if(n==0) return 0; cin>>m; for(i=0;i<m;i++) { cin>>id>>k; for(j=0;j<k;j++) cin>>y,vc[id].push_back(y); } memset(vis,0,sizeof(vis)); maxlevel=0; dfs(1,0); for(i=0;i<=maxlevel;i++) { if(i) printf(""); printf("%d",vis[i]); } return 0; }