Условие
Даны два элемента в дереве. Определите, является ли один из них потомком другого.
Во входных данных записано дерево в том же формате, что и в предыдущей задаче Далее идет число запросов K
. В каждой из следующих K
строк, содержатся имена двух элементов дерева.
Для каждого такого запроса выведите одно из трех чисел: 1, если первый элемент является предком второго, 2, если второй является предком первого или 0, если ни один из них не является предком другого.
Решение
def is_ancestor(man, older_man): if man == older_man: return True while man in p_tree: man = p_tree[man] if man == older_man: return True return False p_tree = dict() n = int(input()) for i in range(n - 1): child, parent = input().split() p_tree[child] = parent for i in range(int(input())): first, second = input().split() if is_ancestor(second, first): print(1, end=' ') elif is_ancestor(first, second): print(2, end=' ') else: print(0, end=' ')