Loading [MathJax]/jax/output/SVG/jax.js

Республиканская олимпиада по информатике. 2018 год


Задача A. Темные комнаты

Ограничение по времени:
2 секунды
Ограничение по памяти:
256 мегабайт

У вас есть n комнат, которые соединены n-1 коридорами. Известно, что с любой комнаты можно дойти до любой другой. В каждой комнате есть ровно одна лампочка. Есть m кнопок пронумерованных от 1 до m, кнопка с номером i включает или выключает лампочки во всех комнатах на пути с комнаты vi до комнаты ui. Состояние комнаты задается одним числом 0 или 1, где 0 означает лампочка выключена, а 1 означает, что она включена. Алан пришел в гости к вам. Вы узнали, что Алан будет чуствовать себя как дома, если состояния комнат будут a1, a2, ..., an для комнат от 1 до n. Вы должны найти какие кнопки и в каком порядке нажимать, чтобы Алан чуствовал себя как дома. Так как вы не хотите заставлять ждать гостя, в последовательности не может быть больше чем 105 кнопок. Если невозможно найти такую последовательность, вы должны вывести -1. Изначально все лампочки во всех комнатах выключены.
Формат входного файла
В первой строке входных данных задается одно целое число n (1n104) — количество комнат. Во второй строке задаются n чисел: a1, a2, ..., an (0ai1) желаемое состояния комнат. Каждая из следующих n-1 строк описывает один коридор двумя целыми числами v и u (1u,vn), что означает есть корридор между комнатами v и u. В следующей строке задается одно целое число m (1m104) — количество кнопок. В каждой из следующих m строк задается описание кнопок: в i-й строке описание i-й кнопки три целых числа ui, vi и ti, где ui и vi (1ui,vin) комнаты которые описывают путь, ti равно 0, если кнопка выключает лампочки или 1, если она включает лампочки.
Формат выходного файла
Выведите `-1'(без кавычек), если невозможно найти нужную последовательность. Иначе, выведите l количество кнопок в последовательности и в следущей строке выведите l чисел — номера кнопок в порядке из нажатия.
Система оценки
Данная задача содержит пять подзадач:
  1. 1n100,1m8. Оценивается в 11 баллов.
  2. 1n,m2000 и ti=1 для всех кнопок. Оценивается в 15 баллов.
  3. 1n,m500. Оценивается в 19 баллов.
  4. 1n,m104 и i-й коридор соединяет комнаты i и i+1. Оценивается в 25 баллов.
  5. 1n,m104. Оценивается в 30 баллов.
Пример:
s Вход
6
1 1 0 0 1 1
1 2
1 3
3 4
3 5
4 6
4
1 2 1
2 5 1
3 4 0
1 6 1
Ответ
3
4 2 3
Вход
3
0 0 1
1 3
1 2
1
1 3 1
Ответ
-1
Замечание
{ \center \includegraphics[width=1.0\textwidth]{sample.eps}
} ( Yerzhan Utkelbayev )
посмотреть в олимпиаде

Комментарий/решение: