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

Задача . F. Свободное вершинное покрытие


Дан простой связный неориентированный граф, состоящий из \(n\) вершин и \(m\) ребер. Вершины пронумерованы от \(1\) до \(n\).

Вершинное покрытие графа — это такой набор вершин, что у каждого ребра есть хотя бы один конец в наборе.

Назовем свободным вершинным покрытием такое вершинное покрытие, что не более одного ребра имеет оба конца в наборе.

Найдите свободное вершинное покрытие графа или сообщите, что его нет. Если существует несколько ответов, то выведите любой из них.

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

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

В первой строке каждого набора входных данных записаны два целых числа \(n\) и \(m\) (\(2 \le n \le 10^6\); \(n - 1 \le m \le \min(10^6, \frac{n \cdot (n - 1)}{2})\)) — количество вершин и количество ребер графа.

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

В каждом наборе входных данных граф связный и не содержит кратных ребер. Сумма \(n\) по всем наборам не превосходит \(10^6\). Сумма \(m\) по всем наборам не превосходит \(10^6\).

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

На каждый набор входных данных в первой строке выведите YES, если свободное вершинное покрытие существует и NO, если нет. Если оно существует, то во второй строке выведите бинарную строку \(s\) длины \(n\), где \(s_i = 1\) означает, что \(i\)-я вершина в вершинном покрытии, а \(s_i = 0\) означает, что \(i\)-я вершина не в нем.

Если существует несколько ответов, то выведите любой из них.

Примечание

Здесь изображены графы из первого примера. Вершины в свободном вершинном покрытии помечены красным.


Примеры
Входные данныеВыходные данные
1 4
6 5
1 3
2 4
3 4
3 5
4 6
4 6
1 2
2 3
3 4
1 4
1 3
2 4
8 11
1 3
2 4
3 5
4 6
5 7
6 8
1 2
3 4
5 6
7 8
7 2
4 5
1 2
2 3
3 4
1 3
2 4
YES
001100
NO
YES
01100110
YES
0110
2 1
10 15
9 4
3 4
6 4
1 2
8 2
8 3
7 2
9 5
7 8
5 10
1 4
2 10
5 3
5 7
2 9
YES
0101100100
3 1
10 19
7 9
5 3
3 4
1 6
9 4
1 4
10 5
7 1
9 2
8 3
7 3
10 9
2 10
9 8
3 2
1 5
10 7
9 5
1 2
YES
1010000011

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

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