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

Розфарбування

Розфарбування

Раскраской неориентированного графа T называется функция C : V(T) → N, где V(T) - множество вершин T. Раскраска C называется хорошей, если между двумя вершинами a и b существует ребро только если |C(a) - C(b)| = 1.

Задан неориентированный граф. Найдите для него хорошую раскраску, или сообщите о ее отсутствии.

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

Первая строка содержит два числа n и m (1n2 * 105, 0m2 * 105): количество вершин и количество ребер в графе. Каждая из следующих m строк содержит два числа x и y (1x, yn) - пара вершин, соединенные ребром. Петли и мультиребра отсутствуют.

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

Если хорошей раскраски не существует, то вывести NET (нет по-русски) в отдельной строке. Иначе вывести DA(да по-русски) в первой строке. На следующей строке вывести n целых чисел C(1), ..., C(n) - хорошую раскраску C. Значения C(x) должны удовлетворять ограничениям 1C(x) ≤ 109. Если существует несколько раскрасок, то вывести любую из них.

Ліміт часу 1 секунда
Ліміт використання пам'яті 128 MiB
Вхідні дані #1
2 1
1 2
Вихідні дані #1
DA
1 2
Вхідні дані #2
3 3
1 2
2 3
3 1
Вихідні дані #2
NET
Вхідні дані #3
5 4
1 2
2 3
2 4
4 5
Вихідні дані #3
DA
1 2 1 3 4
Джерело 2013 Петрозаводск, MIPT contest, Август 25, Задача A