题目描述 "节点的度"指以该节点为端点的边的条数。"偶点"指度为偶数的节点。 给你一棵n个节点的有根树,节点标号为1~n,1号节点为根节点。特别的,每个点的子节点个数不超过5。 请你输出该树中偶点的个数。 输入 第一行一个整数n。 以后n行,每行若干个整数。第i行,第一个数为mi,表示节点i的子节点个数。紧接着mi个整数,表示节点i子节点的编号。保证父节点编号小于子节点。 输出 一行一个整数,表示偶点个数。 样例 输入 复制 3 2 2 3 0 0 输出 复制 1 请用c++语言并用结构体解决
时间: 2024-04-16 08:27:12 浏览: 15
你可以使用以下的C++代码来解决这个问题:
```cpp#include <iostream>
#include <vector>
using namespace std;
struct Node {
int id;
int degree;
};
int countEvenDegrees(int n, vector<vector<int>>& tree) {
vector<Node> nodes(n + 1);
for (int i = 1; i <= n; i++) {
nodes[i].id = i;
nodes[i].degree = tree[i].size();
}
int count = 0;
for (int i = 1; i <= n; i++) {
if (nodes[i].degree % 2 == 0) {
count++;
}
}
return count;
}
int main() {
int n;
cin >> n;
vector<vector<int>> tree(n + 1);
for (int i = 1; i <= n; i++) {
int m;
cin >> m;
tree[i].resize(m);
for (int j = 0; j < m; j++) {
cin >> tree[i][j];
}
}
cout << countEvenDegrees(n, tree) << endl;
return 0;
}
```
这段代码首先定义了一个`Node`结构体,用于表示树中的节点,包含节点的标号和度数。然后,在`countEvenDegrees`函数中,首先使用输入数据构建了节点数组`nodes`,其中每个节点保存了自己的标号和度数。然后,遍历节点数组,统计度数为偶数的节点个数。最后,在`main`函数中,读取输入数据,并调用`countEvenDegrees`函数进行处理,并输出结果。
希望对你有帮助!如果有任何问题,请随时提问。