Skip to content

Latest commit

 

History

History

Folders and files

NameName
Last commit message
Last commit date

parent directory

..
 
 
 
 
 
 

O. Граница дерева

Дано укоренённое бинарное дерево на N вершинах. Скажем, что вершина v находится на границе дерева, если она подходит под любое из условий:

  • v является листом;
  • пусть v находится на расстоянии h от корня. Тогда v — самая левая или самая правая вершина среди всех вершин на расстоянии h от корня.

Найдите все вершины, находящиеся на границе дерева.

Формат ввода

В первой строке записаны два целых числа: количество вершин в дереве n (1 ≤ n ≤ 2⋅105) и rootid (0 ≤ rootid ≤ n−1) — номер вершины-корня.

В следующих n строках описаны вершины. Каждая вершина описывается двумя числами, записанными через пробел: id левого потомка и id правого потомка. Все id находятся в диапазоне [0;n−1]. Если у вершины нет какого-то потомка, то вместо его id будет − 1.

Гарантируется, что входные данные корректны.

Формат вывода

В единственной строке через пробел выведите в любом порядке все id вершин, которые находятся на границе дерева. Каждая вершина должна быть выведена не более одного раза.

Пример

10 0
1 2
3 4
5 6
7 -1
8 -1
-1 -1
9 -1
-1 -1
-1 -1
-1 -1
5 8 9 1 0 7 3 2 6