阅读程序(第三题):树上直径(相距最远的两点距离)
(说明:输入第一行为结点个数 n,第二行为 n − 1 个整数,依次表示结点 2 ∼ n 的父结点编号,满足 2 ≤ n ≤ 100000 且 1 ≤ fa[i] < i,根结点为 1。)
#include <iostream>
using namespace std;
int n,fa[100007],f[100007],ans;
int main() {
cin >> n;
for (int i = 2; i <= n; ++i) {
cin >> fa[i];
}
for (int i = n; i >= 2; --i) {
if (f[fa[i]] + f[i] + 1 > ans) {
ans = f[fa[i]] + f[i] + 1;
}
if (f[i] + 1 > f[fa[i]]) {
f[fa[i]] = f[i] + 1;
}
}
cout << ans << endl;
return 0;
} 子题 单选题
程序输出的 ans 表示的是( )。
子题 单选题
当 n = 7,fa[2] ∼ fa[7] = {1,1,2,2,3,3} 时,输出为( )。
子题 单选题
当 n = 10,满足输出为 9 的合法输入种类数为( )。
子题 判断题
当 n = 5,fa[2] ∼ fa[5] = {1,2,3,4} 时,程序输出 4。( )
子题 判断题
程序输出前,f[1] 的值一定等于 ans 的值。( )
子题 判断题
将第 10∼12 行与第 13∼15 行两个 if 语句的顺序交换后,程序的输出结果不受影响。( )
正在加载题目数据…
子题
该题型需在试卷/作业中作答,单题练习暂不支持
答案解析