甲级1004
https://pintia.cn/problem-sets/994805342720868352/problems/994805521431773184
普通静态数遍历
1 #include<bits/stdc++.h>//dfs 2 using namespace std; 3 #define int long long 4 #define IOS ios_base::sync_with_stdio(0);cin.tie(0);cout.tie(0); 5 const int N=110; 6 vector<int>t[N]; 7 int ans[N]; 8 int n,m; 9 int maxdp=-1; 10 void dfs(int root,int depth) 11 { 12 if(t[root].size()==0) 13 { 14 ans[depth]++; 15 maxdp=max(maxdp,depth); 16 return ; 17 } 18 for(int i=0;i<t[root].size();i++) 19 dfs(t[root][i],depth+1); 20 } 21 signed main() 22 { 23 IOS; 24 cin>>n>>m; 25 int num,k; 26 for(int i=0;i<m;i++) 27 { 28 cin>>num>>k; 29 for(int j=0;j<k;j++) 30 { 31 int tmp; 32 cin>>tmp; 33 t[num].push_back(tmp); 34 } 35 } 36 dfs(1,0); 37 cout<<ans[0]<<" "; 38 for(int i=1;i<=maxdp;i++) 39 { 40 cout<<ans[i]; 41 } 42 return 0; 43 }
44 #include<bits/stdc++.h>//bfs 45 using namespace std; 46 #define int long long 47 #define IOS ios_base::sync_with_stdio(0);cin.tie(0);cout.tie(0); 48 const int N=110; 49 struct node 50 { 51 int depth; 52 vector<int>c; 53 }t[N]; 54 int n,m; 55 int ans[N]; 56 int maxdp=-1; 57 void bfs(int root){ 58 queue<int> q; 59 q.push(root); 60 int now,ed; 61 t[root].depth = 1; 62 while(!q.empty()){ 63 now = q.front(); 64 q.pop(); 65 if(t[now].c.size()==0) 66 { 67 ans[t[now].depth]++; 68 maxdp=max(maxdp,t[now].depth); 69 } 70 for(int i = 0; i < t[now].c.size(); i++){ 71 ed=t[now].c[i]; 72 t[ed].depth = t[now].depth + 1; 73 q.push(ed); 74 75 } 76 } 77 } 78 79 signed main() 80 { 81 IOS; 82 cin>>n>>m; 83 for(int i=1;i<=m;i++) 84 { 85 int id,k; 86 cin>>id>>k; 87 for(int j=1;j<=k;j++) 88 { 89 int child; 90 cin>>child; 91 t[id].c.push_back(child); 92 } 93 } 94 bfs(1); 95 for(int i=1;i<=maxdp;i++) 96 { 97 cout<<ans[i]; 98 if(i<maxdp) 99 cout<<" "; 100 } 101 return 0; 102 }
本文来自博客园,作者:江上舟摇,转载请注明原文链接:https://www.cnblogs.com/LQS-blog/p/16728473.html