#define _CRT_SECURE_NO_WARNINGS
#include<iostream>
#include<vector>
#include<algorithm>
#include<string>
#include<queue>
#define MAX 100
using namespace std;
struct node {
int key;
int level;
node(int _key = 0, int _level = 1) :key(_key), level(_level) {}
};
int main() {
freopen("D://input.txt", "r", stdin);
int nodeNumber, nodeNonleaf, childNumber, i, j, root, sumCount, child, level[MAX], Node[MAX];
//Node 数组存储第i个节点的层级 level存储第i层上有多少个叶节点
int temp, maxLevel;
cin >> nodeNumber >> nodeNonleaf;
vector<vector<int> >parent;
queue<int> Queue;
parent.resize(nodeNumber + 1);
for (i = 0; i < MAX; i++) { //denode nonleaf node on each level
level[i] = 0;
Node[i] = 0;
}
for (i = 0; i < nodeNonleaf; i++) {
cin >> root >> sumCount;
for (j = 0; j < sumCount; j++) {
cin >> child;
parent[root].push_back(child);
}
}
root = 1, maxLevel = 0;
Queue.push(root);
while (!Queue.empty()) {
temp = Queue.front();
if (maxLevel < Node[temp])
maxLevel = Node[temp];
if (parent[temp].size() == 0) {
level[Node[temp]]++;
}
else {
for (i = 0; i < parent[temp].size(); i++) {
Queue.push(parent[temp][i]);
Node[parent[temp][i]] = Node[temp] + 1;
}
}
Queue.pop();
}
cout << level[0];
for (i = 1; i <= maxLevel; i++)
cout << " " << level[i];
cout << endl;
return 0;
}1004. Counting Leaves
最新推荐文章于 2025-07-25 17:12:24 发布
本文介绍了一个使用C++实现的程序,该程序通过读取输入文件来构建一个树状结构,并统计每一层的叶节点数量。文章详细展示了如何初始化节点、建立父子节点关系以及遍历树结构的方法。
450

被折叠的 条评论
为什么被折叠?



