Вам дан простой неориентированный граф, состоящий из \(n\) вершин. Граф не содержит петель, между каждой парой вершин существует не более одного ребра. Ваша задача проста: сделать граф связным.
Вы можете выполнить следующую операцию любое количество раз (возможно, ноль):
- Выберите произвольную вершину \(u\).
- Для каждой вершины \(v\), для которой \(v\ne u\), если \(v\) смежна с \(u\), удалите ребро между \(u\) и \(v\), иначе добавьте ребро между \(u\) и \(v\).
Найдите минимальное количество операций, необходимых для того, чтобы сделать граф связным. Также найдите любую последовательность операций минимальной длины, которая делает граф связным.
Выходные данные
Для каждого набора входных данных в первой строке выведите целое число \(m\) — минимально необходимое количество операций.
Если \(m\) больше нуля, то выведите дополнительную строку, состоящую из \(m\) целых чисел — вершин, выбранных в операциях в вашем решении. Если существует несколько решений с минимальным количеством операций, выведите любое из них.
Примечание
В первом наборе входных данных граф связен в начале, поэтому ответ — \(0\).
Во втором наборе входных данных, если мы выполним операцию с вершиной \(1\), то получим следующий граф, представленный следующей матрицей смежности:
\(\) \begin{bmatrix} 0&1&1\\ 1&0&1\\ 1&1&0 \end{bmatrix} \(\)
Очевидно, что приведенный выше граф является связным.
В третьем наборе входных данных, если мы проделаем операцию с вершинами \(3\) и \(4\), то получим следующий граф, представленный следующей матрицей смежности:
\(\) \begin{bmatrix} 0&1&1&1\\ 1&0&1&1\\ 1&1&0&1\\ 1&1&1&0 \end{bmatrix} \(\)
Очевидно, что приведенный выше граф является связным, и можно доказать, что мы не можем выполнить менее \(2\) операций, чтобы сделать граф связным.
| № | Входные данные | Выходные данные |
|
1
|
4
3
011
100
100
3
000
001
010
4
0100
1000
0001
0010
6
001100
000011
100100
101000
010001
010010
|
0
1
1
2
3 4
3
2 5 6
|