给一个多叉树,让你输出每一层的叶子节点的数目
#include <bits/stdc++.h>
#define fi first
#define se second
#define pb push_back
#define all(x) (x).begin(), (x).end()
using namespace std;
typedef long long ll;
typedef vector<int> vi;
typedef pair<int, int> pa;
struct node {
vi child;
} tree[105];
int maxlevel;
int rec[105];
void dfs(int root, int level) {
if (tree[root].child.size() == 0) {
rec[level]++;
if (level > maxlevel) maxlevel = level;
return;
}
for (int i = 0; i < tree[root].child.size(); i++) dfs(tree[root].child[i], level + 1);
}
int main() {
int n, m;
cin >> n >> m;
for (int i = 0; i < m; i++) {
int r, k;
cin >> r >> k;
for (int j = 0; j < k; j++) {
int ch;
cin >> ch;
tree[r].child.pb(ch);
}
}
dfs(1, 0);
for (int i = 0; i <= maxlevel; i++) cout << rec[i] << (i < maxlevel ? " " : "");
return 0;
}