Приветствую, мучаю задачу второй день и не знаю с ней не так.
1 - 3 скрин условие задачи
4 - неправильные ответы
Выдает ошибку RunTime error предположу, что дело в рекурси, но при этом по условию задачи замкнутого цикла возникать не должно( решаю с помощью графов)
all_classes = {}
for _ in range(int(input())):
request = input().split()
if len(request) == 1:
if request[0] not in all_classes:
all_classes[request[0]] = []
else:
all_classes[request[0]] += request[0]
else:
del request[1]
if request[0] not in all_classes:
all_classes[request[0]] = []
for parent in request[1:]:
all_classes[request[0]] += parent
else:
for parent in request[1:]:
all_classes[request[0]] += parent
def parent_width_search(child):
global count
if request[0] in all_classes[child]:
count += 1
return
else:
for parent in all_classes[child]:
parent_width_search(parent)
if count >= 1:
return
for _ in range(int(input())):
count = 0
request = input().split()
if request[0] == request[1]:
print('Yes')
elif request[1] not in all_classes:
print('No')
else:
parent_width_search(request[1])
print('Yes' if count >= 1 else 'No')
проблема в функции parent_width_search, но в чем именно понять не могу, так как все обычные тесты проходит нормально
система наследования реализуется через словарь где:
{дочерний класс: [элементы родителей]}
Если же у выданного класса не указаны родители, то в словаре создается такая конструкция:
{введеный класс: []}
система поиска предка идет так:
1) проверяет есть ли искомый предок у дочернего класса, если есть, то увеличивает count на 1, это нужно для того, чтобы позже в программе print() вывел "Yes" если count увеличился хотя бы на 1 (то есть нашел хотя бы одного предка у дочернего класса)
2) Если нет то берет всех предков данного класса и через рекурсию прогоняет каждого
3) если вновь нашел, то увеличивает count на 1
проверял на таком тесте, проблем не было, также в условии сказано, что класс сам от себя явно или неявно наследоваться не может, так что не могу понять каким образом моя рекурсия вообще смогла зациклиться
, проблем не было, также в условии сказано, что класс сам от себя явно или неявно наследоваться не может, так что вряд ли из-за этого происходит зацикливание рекурсии