Для неориентированного графа $$$G$$$ назовем порядком соседей упорядоченный список всех соседей вершины для каждой из вершин $$$G$$$. Рассмотрим некоторый порядок соседей в графе $$$G$$$ и три вершины $$$u$$$, $$$v$$$ и $$$w$$$ такие, что $$$v$$$ является соседом $$$u$$$ и $$$w$$$. Мы будет использовать запись $$$u <_{v} w$$$, если $$$u$$$ стоит после $$$w$$$ в списке соседей вершины $$$v$$$.
Порядок соседей называется хорошим, если для каждого простого цикла $$$v_1, v_2, \ldots, v_c$$$ графа выполняется одно из следующих условий:
Для заданного графа $$$G$$$ определите, существует ли для него порядок хороших соседей, и постройте его, если он существует.
Входные данные состоят из нескольких наборов входных данных. В первой строке записано единственное целое число $$$t$$$ ($$$1 \leq t \leq 10^4$$$) — количество наборов входных данных. Далее следуют описания наборов входных данных.
Первая строка каждого набора входных данных содержит два целых числа $$$n$$$ и $$$m$$$ ($$$2 \leq n \leq 3 \cdot 10^5$$$, $$$1 \leq m \leq 3 \cdot 10^5$$$), количество вершин и количество ребер графа.
Следующие $$$m$$$ строк содержат по два целых числа $$$u, v$$$ ($$$0 \leq u, v < n$$$), обозначающих, что существует ребро, соединяющее вершины $$$u$$$ и $$$v$$$. Гарантируется, что граф связный и в нем нет петель и кратных ребер.
Сумма $$$n$$$ и сумма $$$m$$$ для всех тестовых случаев не превосходят $$$3 \cdot 10^5$$$.
Для каждого набора входных данных выведите одну строку с «YES», если граф допускает хороший порядок соседей, иначе выведите одну строку с «NO». Вы можете печатать каждую букву в любом регистре (верхнем или нижнем).
Если ответ «YES», дополнительно выведите $$$n$$$ строк, описывающих порядок хороших соседей. В $$$i$$$-й строке выведите соседей вершины $$$i$$$ по порядку.
35 60 10 21 22 33 44 12 10 16 100 12 00 30 41 21 42 32 53 54 5
YES 1 2 4 2 0 0 1 3 2 4 3 1 YES 1 0 NO
Название |
---|