Проблема вызова рекурсивной функции

Задача определить является ли 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)

Ответы (0 шт):