eolymp
bolt
Попробуйте наш новый интерфейс для отправки задач
Задачи

Противопожарная безопасность

Противопожарная безопасность

В городе Зеленоград $n$ домов. Некоторые из них соединены дорогами с односторонним движением. В последнее время в Зеленограде участились случаи пожаров. В связи с этим жители решили построить в городе несколько пожарных станций. Но возникла проблема --- едущая по вызову пожарная машина, конечно, может игнорировать направление движения текущей дороги, однако, возвращающаяся с задания машина обязана следовать правилам дорожного движения (жители Зеленограда свято чтут эти правила!). Ясно, что где бы ни оказалась пожарная машина, у неё должна быть возможность вернуться на ту пожарную станцию, с которой выехала. Но строительство станций стоит больших денег, поэтому на совете города было решено построить минимальное количество станций таким образом, чтобы это условие выполнялось. Кроме того, для экономии было решено строить станции в виде пристроек к уже существующим домам. Ваша задача --- написать программу, рассчитывающую оптимальное положение станций. \InputFile В первой строке задано число домов $n~(1 \le n \le 3000)$. Во второй строке записано количество дорог $m~(1 \le m \le 10^5)$. Далее следует описание дорог в формате $a_i~b_i$, означающее, что по $i$-ой дороге разрешается движение автотранспорта от дома $a_i$ к дому $b_i~(1 \le a_i, b_i \le n)$. \OutputFile В первой строке выведите минимальное количество пожарных станций $k$, которые необходимо построить. Во второй строке выведите $k$ чисел в произвольном порядке --- дома, к которым необходимо пристроить станции. Если оптимальных решений несколько, выведите любое. \includegraphics{https://static.e-olymp.com/content/70/70056caf613683d74eae3940063319c11b97ba73.gif}
Лимит времени 1 секунда
Лимит использования памяти 128 MiB
Входные данные #1
5
7
1 2
2 3
3 1
2 1
2 3
3 4
2 5
Выходные данные #1
2
4 5
Автор Виталий Гольдштейн
Источник 2011 Зимняя школа, Харьков, День 9