Advertisement
Not a member of Pastebin yet?
Sign Up,
it unlocks many cool features!
- n = int(input()) # кол. вводимых пар
- A = [tuple(input().split()) for i in range(n-1)] # здесь находятся пары (предок, потомок)
- parents = [i[1] for i in A]
- childs = [i[0] for i in A]
- for parent in parents: # нахождение родоначальника
- if parent not in childs:
- ancestor = parent
- break
- now_deep = 0 # в этой переменной хнаниться глубина дерева, на которой мы находимся
- B = set() # здесь будут храниться все люди с их глубиной нахождения (человек, глубина)
- checked_people = set() # люди, у которых нет непроверенных потомков
- def f(people):
- global now_deep
- for para in A:
- if para[1] == people and para[0] not in checked_people:
- now_deep += 1
- f(para[0])
- # Это происходит, если нет непроверенного потомка
- checked_people.add(people)
- B.add((people, now_deep))
- if people == ancestor:
- return
- now_deep -= 1
- for para in A: # поиск родителя
- if para[0] == people:
- people = para[1]
- f(ancestor)
- for people_data in sorted(B):
- print(*people_data)
Advertisement
Add Comment
Please, Sign In to add comment
Advertisement