eolymp
bolt
Попробуйте наш новый интерфейс для отправки задач
Задачи

Перемешанные деревья

Перемешанные деревья

Задан неориентированный связный граф с n вершинами и m ребрами. Каждое ребро имеет счетчик, изначально равный 0. За одну операцию Вы можете выбрать произвольное остовное дерево и добавить любое значение v ко всем ребрам этого остовного дерева.

Определите, можно ли сделать каждый счетчик равным его целевому значению xi по простому модулю p, и предоставьте последовательность операций, обеспечивающих это.

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

Первая строка содержит три целых числа n, m и p - количество вершин, количество ребер и простой модуль (1n500, 1m1000, 2p109, p - простое число).

Следующие m строк содержат по три целых числа ui, vi, xi - две конечные точки i-го ребра и целевое значение счетчика этого ребра (1ui, vin, 0xi < p, uivi).

Граф связный. Циклов нет, но между одними и теми же двумя вершинами может быть несколько ребер.

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

Если целевые значения счетчиков не могут быть достигнуты, выведите -1.

В противном случае выведите t - количество операций, а затем t строк, описывающих последовательность операций. Каждая строка начинается с целого числа v (0v < p) - приращения счетчика для этой операции. Затем в той же строке следуют n - 1 целых чисел e1, e2, ..., en-1 (1eim) - ребра остовного дерева.

Количество операций t не должно превышать 2m. Вам не нужно минимизировать t. Принимается любой правильный ответ в пределах 2m. Вам разрешено повторять остовные деревья.

Лимит времени 1 секунда
Лимит использования памяти 128 MiB
Входные данные #1
3 3 101
1 2 30
2 3 40
3 1 50
Выходные данные #1
5
60 1 2
81 3 2
20 3 1
50 3 2
51 2 1
Входные данные #2
2 2 37
1 2 8
1 2 15
Выходные данные #2
3
23 1
15 2
22 1
Входные данные #3
5 4 5
1 3 1
2 3 2
2 5 3
4 1 4
Выходные данные #3
-1
Источник 2022 ICPC, NERC, Декабрь 7