#include<bits/stdc++.h>
using namespace std;
#define ll long long
ll n,p,ans,sz[200005],f[200005],mp[200005];
vector<ll>e[200005];
void dfs(ll u){
sz[u]=1;
if(!e[u].size()) return;
ll mx=0;
for(int i=0;i<e[u].size();i++) dfs(e[u][i]),sz[u]+=sz[e[u][i]],mx=max(mx,sz[e[u][i]]);
if(mx*2>sz[u]) { ans+=(mx*(sz[u]-mx-1)); return; }
for(int i=0;i<e[u].size();i++) mp[sz[e[u][i]]]++;
f[0]=u;
for(int i=0;i<e[u].size();i++){
if(!mp[sz[e[u][i]]]) continue;
for(int j=0;j<sz[e[u][i]];j++){
for(int l=0,k=-114514191;l*sz[e[u][i]]+j<sz[u];l++){
if(f[l*sz[e[u][i]]+j]==u) k=l;
else if(l-k<=mp[sz[e[u][i]]]) f[l*sz[e[u][i]]+j]=u;
}
}
mp[sz[e[u][i]]]=0;
}
for(int i=(sz[u]-1)/2;;i--){
if(f[i]==u){
ans+=i*(sz[u]-1-i);
return;
}
}
}
int main(){
cin>>n;
for(int i=1;i<n;i++) cin>>p,e[p].push_back(i+1);
dfs(1),cout<<ans;
}
求问以上代码的时间复杂度