10844. Протипожежна безпека
В містечку \(𝑛\) будинків. Деякі з них з'єднані дорогами з одностороннім рухом.
Останнім часом у цьому містечку почастішали випадки пожеж. У зв'язку з цим мешканці вирішили побудувати в місті кілька пожежних станцій. Але виникла проблема: пожежна машина, що їде за викликом, звичайно, може ігнорувати напрям руху поточної дороги, проте машина, що повертається із завданням, зобов'язана дотримуватися правил дорожнього руху (жителі міста свято шанують ці правила!).
Зрозуміло, що де б не виявилася пожежна машина, у неї має бути можливість повернутися на ту пожежну станцію, з якою виїхала. Але будівництво станцій коштує великих грошей, тому на раді міста було вирішено побудувати мінімальну кількість станцій таким чином, щоб ця умова виконувалася. Крім того, для економії було вирішено будувати станції у вигляді прибудов до вже існуючих будинків.
Ваше завдання — написати програму, яка розраховує оптимальне положення станцій.
Формат вхідних даних
У першому рядку задано число \(𝑛\) (\(1≤𝑛≤3000\) ).
У другому рядку записано кількість доріг \(𝑚\) (\(1≤𝑚≤100000 \)).
Далі слідує опис доріг у форматі \(𝑎_𝑖\) \(𝑏_𝑖\) , що означає, що по \(𝑖\)-й дорозі дозволяється рух автотранспорту від будинку \(𝑎_𝑖\) до \(𝑏_𝑖\) (\(1≤a_i,b_i \le n\)) .
Формат вихідних даних
У першому рядку виведіть мінімальну кількість пожежних станцій \(K\), які необхідно побудувати.
У другому рядку виведіть \(K\) чисел в довільному порядку — будинку, до яких необхідно прибудувати станції. Якщо оптимальних рішень є кілька, виведіть будь-яке.
Приклад вхідних даних
5
7
1 2
2 3
3 1
2 1
2 3
3 4
2 5
Приклад вихідних даних
2
5
4
Коментарі