Условие
Даны два элемента в дереве. Определите, является ли один из них потомком другого.
Во входных данных записано дерево в том же формате, что и в предыдущей задаче Далее идет число запросов 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=' ')