#include <iostream>
#include <cstring>
using namespace std;
struct NODE {
int father;
int level;
bool Nochild;
};
NODE v[100];
char level[100] = "\0";
int main() {
int N, M, i, j, K, ID, child, Maxlevel = 1;
cin >> N >> M;
for (i = 0; i < 100; i++) {
v[i].father = 0;
v[i].level = 0;
v[i].Nochild = 1;
}
for (i = 0; i < M; i++) {
cin >> ID >> K;
v[ID].Nochild = 0;
for (j = 0; j < K; j++) {
cin >> child;
v[child].father = ID;
}
}
v[1].level = 1;
for (i = 1; i <= N; i++)
for (j = 1; j <= N; j++) {
if (v[j].father == i) {
v[j].level = v[i].level+1;
if (v[j].level > Maxlevel)
Maxlevel = v[j].level;
}
}
for (i = 1; i <= N; i++) {
if (v[i].Nochild == 1)
level[v[i].level]++;
}
for (i = 1; i < Maxlevel; i++) {
cout << (int)level[i] << " ";
}
cout << (int)level[Maxlevel] << endl;
return 0;
}
PAT(Advanced Level)1004. Counting Leaves (30) 树的层次遍历
最新推荐文章于 2019-10-29 11:23:31 发布