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

Задача . D. Странное расселение


В ЛКШ на территории Летово школьники будь жить в домиках. Некоторые пары домиков соединены крытыми переходами, по которым можно перемещаться в обоих направлениях. В некоторых из этих домиках будут жить преподаватели, но из соображений безопасности они не могут быть размещены произвольным образом. А именно, должны выполняться следующие условия:

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

Помогите организаторам выбрать домики, в которых будут жить преподаватели, так, чтобы выполнялись все требования безопасности, или определите, что это невозможно.

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

В первой строке дано одно целое число \(t\) (\(1 \le t \le 10^5\)), обозначающее количество наборов входных данных.

Описание каждого набора входных данных начинается с двух чисел \(n\) и \(m\) (\(2 \le n \le 3 \cdot 10^5\), \(0 \le m \le 3 \cdot 10^5\)) — количества домиков и переходов.

Далее следуют \(m\) строк, в каждой из которых даны числа \(u\) и \(v\) (\(1 \le u, v \le n\), \(u \neq v\)), описывающие переход между домами \(u\) и \(v\). Гарантируется, что между любыми двумя домами существует не более одного перехода, и никакой переход не соединяет домик сам с собой.

Сумма значений \(n\) по всем наборам входных данных не превосходит \(3 \cdot 10^5\), и сумма \(m\) по всем наборам входных данных не превосходит \(3 \cdot 10^5\).

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

Для каждого набора входных данных в первой строке выведите «YES», если организаторы могут поселить преподавателей так, чтобы выполнялись требования безопасности, и «NO» в противном случае. Если ответ «YES», то во второй строке выведите количество домов, в которые нужно поселить преподавателей, а в третьей строке — номера выбранных домов.

Примечание

Следующая картинка соответствует второму примеру из условия:


Примеры
Входные данныеВыходные данные
1 2
3 2
3 2
2 1
4 2
1 4
2 3
YES
2
1 3 
NO
2 1
17 27
1 8
2 9
3 10
4 11
5 12
6 13
7 14
8 9
8 14
8 15
9 10
9 15
10 11
10 15
10 17
11 12
11 17
12 13
12 16
12 17
13 14
13 16
14 16
14 15
15 16
15 17
16 17
YES
8
1 3 4 5 6 9 14 17

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

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