# 接收节点个数 n = int(input()) # 设置各节点默认高度为1 tree = [1] * n # 设置各节点默认子节点数为0 childNum = [0] * n # 遍历后续输入的n-1行数据,依次处理 for i in range(n-1): # 将输入的行数据按空格拆分,第一个是当前节点的父节点,第二个是当前节点 listTemp = input().split(" ") parent = int(listTemp[0]) node = int(listTemp[1]) # 如果当前节点的父节点的子节点数大于等于2,则已不满足二叉树规范,需减掉此节点,不做后续操作 if childNum[parent] >= 2: tree[node] = 0 continue # 当前节点的高度,在父节点的高度上+1 tree[node] = tree[parent] + 1 # 当前节点的父节点的子节点数加上当前节点(+1) childNum[parent] += 1 # 打印各节点高度列表中,最大值 print(max(tree))