Проблема вызова рекурсивной функции
Задача определить является ли A предком W
5
A
Y : X A
V : Z Y
W : V
Z : K L
1
A W
Обход должен быть таким: W -> V -> Z (K,L) -> Y в Y находится A и возвращается назад по цепочке True
Но фактически программа выполняется W -> V -> Z (K,L), а до Y не доходит
res = {}
def split(word):
return [char for char in word]
for i in range(int(input())):
q = input()
p = q.split(':')[0].strip()
if q.find(':') == -1:
res[p] = []
else:
# ch = split(q.split(':')[1].replace(' ',''))
ch = q.split(':')[1].strip().split(' ')
res[p] = ch
# print()
def is_predok(p, cl, deep=0):
# p - predok ot cl
if p == cl:
return True
if cl in res.keys():
if p in res[cl]:
return True
for c1 in res[cl]:
# return is_predok(p, c1, deep=deep + 1)
if c1 in res.keys():
rk = is_predok(p, c1, deep=deep + 1)
return rk
# if deep == 0:
return False
for i in range(int(input())):
p1, ch1 = input().strip().split()
r = is_predok(p1, ch1)
print(r)