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

Замки и ключи

Замки и ключи

Волшебник находится в лабиринте из \textbf{V} комнат и \textbf{V} - \textbf{1} дверей. Каждая дверь соединяет пару комнат в обоих направлениях. известно, что между любыми двумя комнатами всегда существует путь, проходящий через некоторую последовательность дверей. Также имеются \textbf{C} замков и \textbf{C} ключей \textbf{C} разных цветов(каждый ключ имеет свой цвет) от дверей, соединяющих комнаты в лабиринте; каждая дверь имеет не более одного замка, и в каждой комнате находится не более одного ключа. Вошебнику не стоит труда пройти через систему замков, но проблема состоит в том, что он забыл свою волшебную книгу, без которой его волшебство не действует. На данный момент волшебник находится в комнате \textbf{X}, и он хочет добраться до своей волшебной книги, которая находится в комнате \textbf{Y}, за кратчайшее время. На каждом шаге волшебник может пройти в соседнюю комнату через дверь. Конечно, если дверь на замке, то у него должен быть ключ того же цвета что и замок (если вдруг до этого эта дверь уже не была открыта). Волшебник может нести с собой только один ключ. После того как волшебник подберет ключ, он не может его оставить где-нибудь в лабиринте чтобы потом его снова взять. Как только дверь становится открытой, ключ выбрасывается, так как он больше становится не нужным. По заданному лабиринту и положениям \textbf{C} ключей и \textbf{C} замков, определите как добраться до \textbf{Y} из \textbf{X}, если это возможно. Любой путь, длина которого не больше \textbf{4}^\{ . \}(\textbf{C} + 1)^\{ . \}\textbf{V}, является допустимым. \InputFile Первая строка каждого теста содержит четыре целых числа: количество комнат \textbf{V} (\textbf{1} ≤ \textbf{V} ≤ \textbf{1500}) в лабиринте, количество замков \textbf{C} (\textbf{0} ≤ \textbf{C }< \textbf{V}), и номера комнат \textbf{X} и \textbf{Y}. Комнаты пронумерованы числами \textbf{0}, \textbf{1},..., \textbf{V} - \textbf{1}. Далее идет (возможно пустая) строка из \textbf{C} целых чисел, описывающих местоположение каждого ключа, в порядке возрастания цветов. Следующие \textbf{V} - \textbf{1} строк описывают лабиринт: каждая строка содержит три целых числа \textbf{A B L}, обозначающих тот факт, что между комнатами \textbf{A} и \textbf{B} имеется дверь, которая открывается ключем цвета \textbf{L}, если \textbf{0} ≤ \textbf{L} < \textbf{C}; значение \textbf{-1} для \textbf{L} означает что дверь не содержит замка. Последняя строка содержит \textbf{V}, \textbf{C}, \textbf{X}, \textbf{Y} = \textbf{0}, \textbf{0}, \textbf{0}, \textbf{0} и не обрабатывается. \OutputFile Выходные данные для каждого теста следует выводить в отдельной строке. Если решения не существует, вывести "Impossible". Иначе следует вывести весь путь в формате \textbf{L}: \textbf{V_0},...,\textbf{V_L}, где \textbf{L} ≤ \textbf{4}(\textbf{C} + \textbf{1})\textbf{V} длина пути от \textbf{X} до \textbf{Y}, а \textbf{X} = \textbf{V_0}, \textbf{V_1},..., \textbf{V_L}_\{-1\}, \textbf{V_L} = \textbf{Y} последовательность из \textbf{L} + \textbf{1} вершин, посещаемых в указанном порядке. Перед каждой вершиной в выводимом пути следует печатать один пробел.
Ліміт часу 10 секунд
Ліміт використання пам'яті 256 MiB
Вхідні дані #1
1 0 0 0


3 1 0 2
1
0 1 -1
0 2 0

3 2 0 2
1 2
0 1 1
0 2 0

5 3 0 4
2 0 3
0 1 0
0 2 -1
1 3 1
2 4 2

0 0 0 0
Вихідні дані #1
0: 0
3: 0 1 0 2
Impossible
10: 0 2 0 1 0 1 3 1 0 2 4