#13128. 珅泽教育CSP-J第一轮模拟考第二十九套 第 29 题
珅泽教育CSP-J第一轮模拟考第二十九套 第 29 题
二、程序阅读题(第 16—18 大题,共 18 个小题,40 分)
程序阅读(判断是否可选根成为完整二叉树)
输入不超过 10^6 的正整数 n,随后输入 n-1 条边构建一棵树。保证存在某个点作为根后,每个点的子结点数量不超过 2。
#include <iostream>
#include <vector>
using namespace std;
vector<int> edge[1000005];
int max_depth;
void f(int now, int fa, int depth) {
max_depth = max(max_depth, depth);
for (int i = 0; i < edge[now].size(); i++) {
if (edge[now][i] == fa)
continue;
f(edge[now][i], now, depth + 1);
}
return;
}
int main() {
int n;
cin >> n;
int t = n;
while (--t) {
int u, v;
cin >> u >> v;
edge[u].emplace_back(v);
edge[v].emplace_back(u);
}
int star = 0, num = 0;
for (int i = 1; i <= n; i++) {
if (edge[i].size() == 2) {
star = i;
num++;
}
}
if (num == 1) {
f(star, 0, 1);
cout << "yes " << max_depth;
} else
cout << "no";
return 0;
}
将第 33 行语句改为 f(star,1,1),并不改变程序运行结果。
{{ select(1) }}
- 正确
- 错误