A.Party
` import heapq, math from itertools import * from bisect import * from collections import * from sys import stdin, stdout
#####-> Templates <-
def pr(out): return stdout.write(f"{out}\n")
def input(): return stdin.readline().rstrip()
def int_inp(): return int(input())
def inp_int_l(): return list(map(int, stdin.readline().split()))
def inp_l(): return stdin.readline().split()
####################################
def solve(): n = int(input()) graph = [[] for _ in range(n)] indegree = [0] * n for node in range(n): p = int_inp() if p != -1: graph[p — 1].append(node) indegree[node] += 1 level = [[node for node in range(n) if indegree[node] == 0]] queue = deque(level[0]) while queue:
lev = [] for _ in range(len(queue)): node = queue.popleft() for nei in graph[node]: lev.append(nei) queue.append(nei) level.append(lev) count = 0 for l in level: if l: count += 1 print(count)
if name == "__main__": t = 1 for _ in range(t): solve() ` ~~~~~
~~~~~