思路:dp,树转换为左孩子右兄弟的二叉树后,以i为根的树的最大深度为节点i的孩 子数量+孩子中子树最深的深度。使用li[i]记录结点i的所有子节点,dp公式即为:孩子数+max(子树深度),即 len(li[i])+max(dptest(i1、2、3……))
import sys
sys.setrecursionlimit(100000) #限制递归次数
n=int(input())
li=[[] for i in range(n+1)] #li[i]是结点i的所有子节点
# li[i]=i的子节点数量+子树转为二叉树后的最大高度
for i in range(n-1):
temp=int(input())
li[temp].append(i+2)
def dptest(x):
ans=0
for i in li[x]:
ans=max(ans,len(li[x])+dptest(i))
return ans
result=dptest(1)
print(result)



