Advertisement
FroztGal

tree_len

Jan 10th, 2020
147
0
Never
Not a member of Pastebin yet? Sign Up, it unlocks many cool features!
Python 0.65 KB | None | 0 0
  1. # Input
  2. n = int(input())
  3. s = [int(x) for x in input().rstrip().split()]
  4.  
  5. # Init
  6. mas_len = [0] * n
  7. mas_len[s.index(-1)] = -1
  8. lst = []
  9.  
  10. # Main
  11. for i in range(n):
  12.     if mas_len[i] != 0:
  13.         continue
  14.     lst.append(i)
  15.     cur = s[i]
  16.     while cur != -1:
  17.         if mas_len[cur] != 0:
  18.             break
  19.         lst.append(cur)
  20.         cur = s[cur]
  21.     for j in range(len(lst)):
  22.         tmp = lst.pop()
  23.         if mas_len[cur] == -1:
  24.             mas_len[tmp] = mas_len[cur] + j + 3
  25.         else:
  26.             mas_len[tmp] = mas_len[cur] + j + 1
  27.  
  28. # Output
  29. # print(mas_len)
  30. if max(mas_len) == -1:
  31.     print('1')
  32. else:
  33.     print(max(mas_len))
Advertisement
Add Comment
Please, Sign In to add comment
Advertisement