Official

C - Ameba Editorial by kyopro_friends


求める答えは親のアメーバに対する答え \(+1\) になります。したがって、各アメーバが生まれたタイミングで答えを記録することで、\(O(N)\) で解くことができます。

実装例(Python)

N=int(input())
A=list(map(int,input().split()))
ans=[0]*(2*N+1)
for i,a in enumerate(A):
  ans[2*i+1]=ans[a-1]+1
  ans[2*i+2]=ans[a-1]+1

print(*ans,sep="\n")

posted:
last update: