#13132. 珅泽教育CSP-J第一轮模拟考第二十九套 第 33 题
珅泽教育CSP-J第一轮模拟考第二十九套 第 33 题
二、程序阅读题(第 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;
}
若 n=10^6-1,则输出的 max_depth 可能的最小值和最大值分别是多少( )。
{{ select(1) }}
- 60,999999
- 21,499999
- 20,500000
- 13,500001