Низ графіка
Ми будемо використовувати такі (стандартні) визначення з теорії графів. Нехай V — це непорожня і скінченна множина, елементи якої називаються вершинами (або вузлами). Нехай E V×V, елементи якої називаються ребрами. Тоді G = (V,E) називається орієнтованим графом.
Нехай n — додатне ціле число, і нехай p = (e_1, ..., e_n) — послідовність довжини n ребер e_i E така, що e_i = (v_i, v_{i+1}) для послідовності вершин (v_1, ..., v_{n+1}). Тоді p називається шляхом від вершини v_1 до вершини v_{n+1} у G, і ми кажемо, що v_{n+1} досяжна з v_1, записуючи (v_1 → v_{n+1}). Ось деякі нові визначення. Вузол v у графі G = (V, E) називається стоком, якщо для кожного вузла w у G, який досяжний з v, v також досяжний з w. Дно графа — це
підмножина всіх вузлів, які є стоками, тобто
bottom(G) = {v V | (w V )v → w w → v}.
Ваше завдання — обчислити дно певних графів.
Вхідні дані
Вхід містить кілька тестових випадків, кожен з яких відповідає орієнтованому графу G. Кожен тестовий випадок починається з цілого числа v, яке позначає кількість вершин G = (V, E), де вершини будуть ідентифіковані цілими числами у множині V = {1, ..., v}. Ви можете припустити, що 1 ≤ v ≤ 5000. За цим слідує невід'ємне ціле число e і потім e пар ідентифікаторів вершин v_1, w_1, ..., v_e, w_e з тим значенням, що (v_i, w_i) E. Інших ребер, окрім зазначених у цих парах, немає. Останній тестовий випадок супроводжується нулем.
Вихідні дані
Для кожного тестового випадку виведіть дно зазначеного графа в одному рядку. Для цього надрукуйте номери всіх вузлів, які є стоками, у відсортованому порядку, розділені одним пробілом. Якщо дно порожнє, надрукуйте порожній рядок.