7. Поиск в глубину

  • лёгкая
  • dfs

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

Напомним:

Петля в графе - это ребро, которое соединяет вершину с самой собой.

Кратные рёбра в графе - это ребра, которые соединяют одну и ту же пару вершин.

Компонента связности в неориентированном графе - это подмножество вершин, таких что все вершины достижимы друг из друга.

Формат ввода

В первой строке записаны два целых числа $N$ ($1 \leq N \leq 10^3$) и $M$ ($0 \leq M \leq 5 * 10^5$) — количество вершин и ребер в графе. В последующих $M$ строках перечислены ребра — пары чисел, определяющие номера вершин, которые соединяют ребра. Далее может идти произвольное количество пустых строк.

Формат вывода

В первую строку выходного файла выведите число $K$ — количество вершин в компоненте связности. Во вторую строку выведите $K$ целых чисел — вершины компоненты связности, перечисленные в порядке возрастания номеров.

Пример 1

Ввод
4 5
2 2
3 4
2 3
1 3
2 4

Вывод
4
1 2 3 4