Олимпиадный тренинг

Задача . E. Происшествия на лыжах


Артур — владелец горнолыжного курорта. На горе расположено \(n\) площадок, пронумерованных от \(1\) до \(n\), начиная с вершины и заканчивая подножьем горы. Площадки соединены однонаправленными треками. Все треки направлены от вершины к подножью, поэтому они не могут образовывать направленных циклов. Из каждой площадки исходит не более, чем две трека, но в одну и ту же площадку может входить любое количество треков.

Лыжник может спуститься с одной из площадок до другой, если существует путь из треков, которая ведёт из стартовой площади в конечную. К сожалению, в последнее время участились несчастные случаи из-за того, что лыжники, спускающийся по опасному пути, набирают слишком большую скорость и ставят в опасность себя и окружающих. Путь считается опасным, если он состоит из двух или более треков.

Артур хочет обезопасить своих клиентов и закрыть несколько площадок таким образом, чтобы устранить опасные пути. Если площадка закрыта, все треки, входящие и исходящие из этой площадки, также закрываются.

Формально, после закрытия площадок в оставшейся части не должно существовать пути из двух или более треков.

Артур не хочет закрывать слишком много площадок. Он будет доволен, если удастся найти способ закрыть не более \(\frac{4}{7}n\) площадок, чтобы оставшаяся часть была безопасна. Помогите ему найти любой способ этого добиться.

Входные данные

В первой строке записано одно положительное целое число \(T\) — количество наборов входных данных. После этого следует \(T\) блоков с описанием наборов входных данных.

Первая строка каждого блока содержит два целых числа \(n\) и \(m\) (\(1 \leq n \leq 2 \cdot 10^5\)) — количество площадок и треков соответственно.

Следующие \(m\) строк описывают треки. Каждая из этих строк содержит два целых числа \(x\) и \(y\) (\(1 \leq x < y \leq n\)) — номера стартовой и финишной площадки очередного трека. Гарантируется, что из каждой площадки исходит не более двух треков. Могут существовать треки, у которых и начала, и концы совпадают.

Гарантируется, что сумма \(n\) по всем наборам входных данных не превосходит \(2 \cdot 10^5\).

Выходные данные

Для каждого набора входных данных выведите одно целое число \(k\) (\(0 \leq k \leq \frac{4}{7}n\)) — количество площадок, которые нужно закрыть. В следующей строке выведите \(k\) различных целых чисел — номера площадок, которые нужно закрыть, в любом порядке.

Если существует несколько ответов, разрешается вывести любой из них. Обратите внимание, что минимизировать \(k\) не требуется. Можно показать, что подходящий ответ всегда существует.

Примечание

В первом наборе входных данных можно закрыть любые две площадки.

Во втором наборе входных данных закрыть только площадку \(1\) также является корректным.


Примеры
Входные данныеВыходные данные
1 2
4 6
1 2
1 3
2 3
2 4
3 4
3 4
7 6
1 2
1 3
2 4
2 5
3 6
3 7
2
3 4 
4
4 5 6 7

time 2000 ms
memory 512 Mb
Правила оформления программ и список ошибок при автоматической проверке задач

Статистика успешных решений по компиляторам
 Кол-во
С++ Mingw-w645
Комментарий учителя