在遍历树中记录树的层次:
- dfs:dfs(int x,int depth)
- bfs:bfs(<int x,int depth>)//队列中用pair
#include<bits/stdc++.h>
using namespace std;
const int maxn = 105,maxm = 105;
int n,m,cnt;
int depth[maxn],maxde;
vector<int> tree[maxn];
void dfs(int x,int de) {
if(tree[x].size()==0) {
depth[de] ++;
maxde = max(maxde,de);
return ;
}
for(int i=0;i<tree[x].size();i++) {
int y = tree[x][i];
dfs(y,de+1);
}
}
int main()
{
cin >> n >> m;
for(int i=0;i<m;i++) {
int tmp,k;
cin >> tmp >> k;
for(int j=0;j<k;j++) {
int x;
cin >> x;
tree[tmp].push_back(x);
}
}
dfs(1,0);
for(int i=0;i<=maxde;i++) {
cout << depth[i];
if(i!=n-1) cout <<" ";
}
return 0;
}