Олимпиадный тренинг

Задача . D. Классный граф


Вам дан неориентированный граф с \(n\) вершинами и \(m\) рёбрами.

Вы можете выполнить следующую операцию не более чем \(2\cdot \max(n,m)\) раз:

  • Выберите три различные вершины \(a\), \(b\) и \(c\). Затем для каждого из рёбер \((a,b)\), \((b,c)\) и \((c,a)\) выполните следующее:
    • Если ребро не существует, добавьте его. В противном случае, если оно существует, удалите его.

Граф называется классным, если и только если выполняется одно из следующих условий:

  • Граф не имеет рёбер, или
  • Граф является деревом.

Вам нужно сделать граф классным, выполняя указанные выше операции. Обратите внимание, что вы можете использовать не более чем \(2\cdot \max(n,m)\) операций.

Можно показать, что всегда существует хотя бы одно решение.

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

Каждый тест состоит из нескольких наборов входных данных. В первой строке находится одно целое число \(t\) (\(1\le t\le 10^4\)) — количество наборов входных данных. Далее следует описание наборов входных данных.

Первая строка каждого набора входных данных содержит два целых числа \(n\) и \(m\) (\(3\le n\le 10^5\), \(0\le m\le \min\left(\frac{n(n-1)}{2},2\cdot 10^5\right)\)) — количество вершин и количество рёбер.

Затем следуют \(m\) строк, \(i\)-я строка содержит два целых числа \(u_i\) и \(v_i\) (\(1\le u_i,v_i\le n\)) — две вершины, которые соединяет \(i\)-е ребро.

Гарантируется, что сумма \(n\) по всем наборам входных данных не превышает \(10^5\), а сумма \(m\) по всем наборам входных данных не превышает \(2\cdot 10^5\).

Гарантируется, что в данном графе нет петель или кратных рёбер.

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

Для каждого набора входных данных в первой строке выведите целое число \(k\) (\(0\le k\le 2\cdot \max(n, m)\)) — количество операций.

Затем выведите \(k\) строк, \(i\)-я строка содержит три различных целых числа \(a\), \(b\) и \(c\) (\(1\le a,b,c\le n\)) — три целых числа, которые вы выбрали в \(i\)-й операции.

Если существует несколько решений, вы можете вывести любое из них.

Примечание

В первом наборе входных данных граф уже классный, потому что рёбер нет.

Во втором наборе входных данных, после выполнения единственной операции, граф становится деревом, поэтому он классный.

В третьем наборе входных данных граф уже классный, потому что он является деревом.

В четвёртом наборе входных данных, после выполнения единственной операции, граф не имеет рёбер, поэтому он классный.

В пятом наборе входных данных:

ОперацияГраф до операцииГраф после операции
\(1\)
\(2\)
\(3\)

Обратите внимание, что после первой операции граф уже стал классным, и есть две лишние операции. Поскольку граф по-прежнему классный после двух лишних операций, это является допустимым ответом.


Примеры
Входные данныеВыходные данные
1 5
3 0
3 1
1 2
3 2
1 2
2 3
3 3
1 2
2 3
3 1
6 6
1 2
1 6
4 5
3 4
4 6
3 6
0
1
1 2 3
0
1
1 2 3
3
1 3 6
2 4 5
3 4 6

time 3000 ms
memory 512 Mb
Правила оформления программ и список ошибок при автоматической проверке задач

Статистика успешных решений по компиляторам
 Кол-во
С++ Mingw-w643
Комментарий учителя