Advertisement
Guest User

Untitled

a guest
Jun 25th, 2019
71
0
Never
Not a member of Pastebin yet? Sign Up, it unlocks many cool features!
Python 1.32 KB | None | 0 0
  1. n = int(input())  # кол. вводимых пар
  2. A = [tuple(input().split()) for i in range(n-1)]  # здесь находятся пары (предок, потомок)
  3. parents = [i[1] for i in A]
  4. childs = [i[0] for i in A]
  5. for parent in parents:  # нахождение родоначальника
  6.     if parent not in childs:
  7.         ancestor = parent
  8.         break
  9. now_deep = 0  # в этой переменной хнаниться глубина дерева, на которой мы находимся
  10. B = set()  # здесь будут храниться все люди с их глубиной нахождения (человек, глубина)
  11. checked_people = set()  # люди, у которых нет непроверенных потомков
  12. def f(people):
  13.     global now_deep
  14.     for para in A:
  15.         if para[1] == people and para[0] not in checked_people:
  16.             now_deep += 1
  17.             f(para[0])
  18.     # Это происходит, если нет непроверенного потомка
  19.     checked_people.add(people)
  20.     B.add((people, now_deep))
  21.     if people == ancestor:
  22.         return
  23.     now_deep -= 1
  24.  
  25.     for para in A:  # поиск родителя
  26.         if para[0] == people:
  27.             people = para[1]
  28. f(ancestor)
  29. for people_data in sorted(B):
  30.     print(*people_data)
Advertisement
Add Comment
Please, Sign In to add comment
Advertisement