组合题6 个小题
已作答 0 / 6
1#include <iostream>2using namespace std;3int n, fa[100007], f[100007], ans;4int main() {5 cin >> n;6 for (int i = 2; i <= n; ++i) {7 cin >> fa[i];8 }9 for (int i = n; i >= 2; --i) {10 if (f[fa[i]] + f[i] + 1 > ans) {11 ans = f[fa[i]] + f[i] + 1;12 }13 if (f[i] + 1 > f[fa[i]]) {14 f[fa[i]] = f[i] + 1;15 }16 }17 cout << ans << endl;18 return 0;19}说明:输入第一行为结点个数 n,第二行为 n−1 个整数,依次表示结点 2—n 的父结点编号,满足 2≤n≤10000 且 1≤fa[i]<i,根结点为 1。
程序输出前,f[1] 的值一定等于 ans 的值。( )