"节点的度"指以该节点为端点的边的条数。"偶点"指度为偶数的节点。 给你一棵n个节点的有根树,节点标号为1~n,1号节点为根节点。特别的,每个点的子节点个数不超过5。 请你输出该树中偶点的个数。 输入 第一行一个整数n。 以后n行,每行若干个整数。第i行,第一个数为mi,表示节点i的子节点个数。紧接着mi个整数,表示节点i子节点的编号。保证父节点编号小于子节点。 输出 一行一个整数,表示偶点个数。 样例 输入 复制 3 2 2 3 0 0 输出 复制 1 c++代码
时间: 2024-04-16 17:27:57 浏览: 82
```cpp
#include <iostream>
#include <vector>
using namespace std;
int countEvenPoints(vector<vector<int>>& tree, int node) {
int count = 0;
// Count the number of even points in the subtree rooted at 'node'
for (int child : tree[node]) {
count += countEvenPoints(tree, child);
}
// Increment count if the current node is even
if (tree[node].size() % 2 == 0) {
count++;
}
return count;
}
int main() {
int n;
cin >> n;
vector<vector<int>> tree(n + 1); // Adjacency list representation of the tree
// Read the tree edges
for (int i = 2; i <= n; i++) {
int parent;
cin >> parent;
tree[parent].push_back(i);
}
int evenPoints = countEvenPoints(tree, 1); // Start counting even points from the root
cout << evenPoints << endl;
return 0;
}
```
这段代码使用了与之前提供的代码相同的逻辑来计算偶点的个数。它首先读取整数 n,然后构建了一个邻接列表表示的树。接下来通过调用 `countEvenPoints` 函数来计算偶点的数量,并将结果打印输出。
请确保您正确理解并能够运行此代码。如果有任何问题,请随时提问。
阅读全文