Спостереження за птахами#9712

Спостереження за птахами

1 секунда
128 мегабайтів
Складна

Кьяра вивчає незвичайний вид птахів, які пересуваються дуже своєрідним чином. Їх пересування найзручніше описувати мовою графів: існує орієнтований граф , у якому вершини відповідають деревам, і птах може перелетіти з дерева T_a на дерево T_b тільки в тому випадку, якщо в графі існує ребро (T_a, T_b).

Кьяра не знає точний вигляд графа , що описує пересування птахів, але під час попередніх польових спостережень вона зібрала дані про подорожі багатьох птахів. На основі цих даних вона побудувала граф , що відображає, як, за її спостереженнями, птахи переміщуються. Кьяра настільки ретельно стежила за птахами, що впевнена: якщо птах міг перелетіти напряму з в , то вона принаймні один раз зафіксувала такий переліт. Проте можливо, що птах перелетів із в , потім у , а Кьяра помітила лише точки і , після чого додала ребро у граф . Також можливо, що птах пролетів маршрут a \rightarrow b \rightarrow c \rightarrow d, а Кьяра помітила лише і і додала у , і так далі. Загалом, Кьяра знає, що граф містить усі ребра графа , і що він може містити деякі додаткові ребра , для яких у графі існує шлях із в (при цьому не зобов'язаний містити всі такі ребра).

У своєму наступному польовому дослідженні Кьяра вирішила розмістити базу поруч із заданим деревом . Щоб бути заздалегідь попередженою про наближення птахів до дерева , вона хоче встановити детектори на деревах, звідки птахи можуть прилетіти (тобто на таких деревах T', що в графі існує ребро (T', T)). Оскільки детектори дорогі, вона хоче встановлювати їх тільки на ті дерева T', для яких вона впевнена, що (T', T) дійсно є ребром графа .

Кьяра впевнена, що ребро належить графу , якщо є ребром графа і всі шляхи в , що починаються в і закінчуються в , використовують ребро . Кьяра просить вас обчислити множину дерев T', для яких вона впевнена, що (T', T) є ребром графа .

Вхідні дані

Вхідні дані описують граф . Перший рядок містить три цілих числа: N, M~(1 \le N, M \le 10^5) і T~(0 \le T < N). Тут — кількість вершин у графі , — кількість ребер у графі , а — вершина, що відповідає дереву, поруч з яким Кьяра встановить свою базу.

Наступні рядків описують ребра графа . Кожна з них містить два цілих числа і  (0 \le a, b < N і a \ne b), що означають, що (a, b) \in P. Гарантовано, що одна й та сама пара не зустрінеться більше одного разу.

Вихідні дані

Виведіть множину . Перший рядок повинен містити одне ціле число — кількість вершин у , за яким слідують рядків, кожен з яких містить один елемент множини . Елементи множини повинні бути виведені у порядку зростання, по одному елементу в рядку.

Приклади

Пояснення до прикладу 1. Вершина належить , тому що (єдиний) шлях від до використовує ребро . Вершина не належить , оскільки шлях 0 \rightarrow 1 \rightarrow 2 не використовує ребро .

Пояснення до прикладу 2. З тієї ж причини, що й у прикладі , вершина не належить , тоді як вершина належить. Вершини і не належать , оскільки у графі немає ребер або . Нарешті, вершина належить , тому що всі шляхи від до проходять через ребро .

Приклад 1

Loading
Loading

Приклад 2

Loading
Loading