每棵树最大形成的高度=其最深子树的高度(根节点高度为0)+其孩子的数量
一遍ac呐
代码:
#include<iostream>
#include<vector>
using namespace std;
const int N=100010;
vector<int>a[N];
int res;
int dfs(int u){
int tmp=0;
for(int i=0;i<a[u].size();i++){
int v=a[u][i];
tmp=max(tmp,dfs(v));
}
return tmp+a[u].size();
}
int main(){
int n; scanf("%d",&n);
for(int i=2;i<=n;i++){
int fa; scanf("%d",&fa);
a[fa].push_back(i);
}
int res=dfs(1);
printf("%d",res);
return 0;
}