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