Низ графа#6223

Низ графа

1 секунда
64 мегабайти
Дуже легка

Будемо використовувати такі (стандартні) визначення з теорії графів. Нехай — це непорожня скінченна множина, елементи якої називаються вершинами (або вузлами). Нехай E \subseteq V \times V, елементи якої називаються ребрами. Тоді G = (V, E) називається орієнтованим графом.

Нехай — додатне ціле число, і нехай p = (e_1, \ldots, e_n) — послідовність довжини ребер e_i \in E така, що e_i = (v_i, v_{i+1}) для послідовності вершин (v_1, \ldots, v_{n+1}). Тоді називається шляхом від вершини v_1 до вершини v_{n+1} у , і кажуть, що v_{n+1} досяжна з v_1, записуючи (v_1 \to v_{n+1}).

Ось деякі нові визначення. Вузол у графі G = (V, E) називається стоком, якщо для кожного вузла у , який досяжний з , також досяжна з .

Дно графа — це підмножина всіх вузлів, які є стоками, тобто

\operatorname{bottom}(G) = \{ v \in V \mid \forall w \in V: (v \to w) \implies (w \to v) \}.

Ваше завдання — обчислити дно заданих графів.

Вхідні дані

Вхід містить кілька тестових випадків, кожен з яких відповідає орієнтованому графу . Кожен тестовий випадок починається з цілого числа , яке позначає кількість вершин G = (V, E), де вершини ідентифікуються цілими числами з множини V = \{1, \ldots, v\}. Можна вважати, що 1 \le v \le 5000. Далі йдуть невід'ємне ціле число , а потім пар ідентифікаторів вершин v_1, w_1, \ldots, v_e, w_e із значенням, що (v_i, w_i) \in E. Інших ребер, окрім зазначених у цих парах, немає. Останній тестовий випадок супроводжується нулем.

Вихідні дані

Для кожного тестового випадку виведіть дно зазначеного графа в одному рядку. Для цього надрукуйте номери всіх вузлів, які є стоками, у відсортованому порядку, розділені одним пробілом. Якщо дно порожнє, надрукуйте порожній рядок.

Приклади

Приклад 1

Loading
Loading