Advertisement
Not a member of Pastebin yet?
Sign Up,
it unlocks many cool features!
- # Дерево записывается в список смежности l = [],
- # обработка происходит при помощи рекурсивной функции cnt(k,count).
- # Вывод проводится при помощи вызова функции для каждой вершины.
- # Кстати, в формулировке задачи была ошибка:
- # " Задано дерево из N вершин. ... В первой строке задается количество вершин,
- # затем в N строках само дерево.
- # Пример
- # 3
- # 1 2
- # 2 3 "
- # Строк ввода самого дерева всегда меньше на один, чем N . Корректней в N-1 строке, так
- # как вводятся ребра (по свойствам деревьев).
- N = int(input())
- l = []
- for i in range(N-1):
- a = input()
- l.append(a.split())
- # Суть работы функции заключается в том, чтобы складывать количество вершин каждого
- # поддерева, с корнями в вершинах следующего яруса в дереве с заданным корнем,
- # при этом пройдет перебор в глубину.
- def cnt(k,count):
- for j in l:
- if j[0] == str(k):
- count += cnt(j[1], count)
- count += 1
- return count
- # В выводе цикл проходит по вершинам от 1 до N и печатает значение функции для каждой в форме: (номер вершины : количество вершин в поддереве).
- for i in range(1,N+1):
- print(i,':', cnt(i,0))
Advertisement
Add Comment
Please, Sign In to add comment
Advertisement