Top.Mail.Ru
Ответы

Помогите прошу очень надо

Родословная Кнопочки Кнопочка ведёт свою родословную. Так как у неё нет удобного и наглядного редактора для редактирования и хранения бинарных деревьев (Дерево как структура данных), то она выбрала простой способ записи для наследования - в текстовом редакторе построчно просто указывает пары: родитель дитя. Кнопочка хочет узнать насколько глубоко ей удалось построить свою родословную. По текстовому файлу это сделать затруднительно. Напишите программу, которая подсчитает глубину дерева родословной Кнопочки. Гарантируется, что у всех родственников уникальные имена и у Кнопочки есть хотя бы один родитель. Глубиной дерева будем считать максимальное количество поколений, включая и поколение Кнопочки. Количество пар "родитель-дитя" в данной задаче не может быть более 1000. Например, для рис."a" - ответ 3, а для рис."б" - ответ 2. На вход подаются: в первой строке целое число N - количество пар "родитель-дитя", в последующих N строках пары имён, написанные через пробел. На выход подайте одно целое число - глубину дерева родословной. Sample Input 1: 4 Арсен Кнопочка Вера Кнопочка Cеня Bера Алла Вера Sample Output 1: 3 Sample Input 2: 1 Вера Кнопочка Sample Output 2: 2

По дате
По рейтингу
Аватар пользователя
Профи

Я конечно все понимаю, но это предоставлено как то непонятно

Аватар пользователя
Ученик

def find_depth(relatives_dict, parent):
if parent not in relatives_dict:
return 1
max_depth = 1
for child in relatives_dict[parent]:
max_depth = max(max_depth, find_depth(relatives_dict, child) + 1)
return max_depth

n = int(input())
relatives_dict = {}
for i in range(n):
parent, child = input().split()
if parent not in relatives_dict:
relatives_dict[parent] = []
relatives_dict[parent].append(child)

max_depth = find_depth(relatives_dict, "Кнопочка")
print(max_depth)

Аватар пользователя
Ученик

input: 3
Арсен Кнопочка
Вера Кнопочка
Сеня Кнопочка

output: 4

input: 2
Вера Кнопочка
Люська Вера

output: 2

Аватар пользователя
Мастер

че...

Аватар пользователя
Ученик

Ну тут хз