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

Войти и выйти

Войти и выйти

Молодой пират Вил Твистер потерял драгоценный медальон, который достался ему от отца. Сейчас он находится в руках губернатора Гуза. Так как этот медальон очень дорог Вилу, он решает его украсть. Его присутствие не останется незамеченным (он же не ниндзя), поэтому для увеличения своих шансов на успех он будет использовать покровы ночи. Это означает, что путешествие в губернаторский дом будет также опасным, так как каждый, кто идет через город ночью, является подозрительным. В городе полно часовых^1, расположенных на стратегически важных перекрестках. Вил не очень хороший боец, поэтому он будет опираться на фактор внезапности и скорости для того чтобы пройти мимо них. Если Вил будет проходить мимо одного и того же часового дважды при движении к и от губернаторского дома, то фактор внезапности исчезнет, и во второй раз прохода имеется очень большой риск быть пойманным. Поэтому он не хочет дважды проходить мимо одного и того же часового. Путешествие начинается в гавани, куда он прибудет и уедет на лодке. У него имеется карта города, на которой показаны все местоположения часовых. Учитывая, что ему придется много бежать, он хочет найти кратчайший маршрут к и от губернаторского дома, который не проходит дважды мимо любого часового. Можете ли Вы помочь ему найти такой путь? _______ ^1 - часовой - это стационарный охранник. \InputFile Первая строка содержит количество тестов. Каждый тест имеет следующий формат: \begin{itemize} \item Первая строка содержит количество перекрестков \textbf{n }и количество дорог \textbf{r} (\textbf{2 }≤ \textbf{n }≤ \textbf{1000}, \textbf{1 }≤ \textbf{r }≤ \textbf{10000}). \item \textbf{r }строк по три числа \textbf{a}, \textbf{b }и \textbf{l }(\textbf{1 }≤ \textbf{a}, \textbf{b }≤ \textbf{n}, \textbf{1 }≤ \textbf{l }≤ \textbf{1000}), задающих двунаправленную дорогу между перекрестками \textbf{a }и \textbf{b }длины \textbf{l}. \item Строка содержащая количество перекрестков \textbf{S }(\textbf{0 }≤ \textbf{S }≤ \textbf{min(N-2}, \textbf{100)}). \item Строка с \textbf{S }различными целыми числами \textbf{s_i} (\textbf{2} ≤ \textbf{s_i} < \textbf{n}), указывающими на то что на перекрестке \textbf{s_i} стоит часовой. \end{itemize} Перекрестки пронумерованы от \textbf{1 }до \textbf{n}. Лодка Вила находится на перекрестке \textbf{1}, а дом губернатора на перекрестке \textbf{n}. Гарантируется, что путь от лодки до дома губернатора существует. \OutputFile Для каждого теста вывести в отдельной строке наименьшее суммарное расстояние, которое следует преодолеть Вилу. Если не существует маршрута, проходящего мимо каждого часового не более одного раза, следует вывести "\textbf{No safe route}" (без кавычек).
Ліміт часу 1 секунда
Ліміт використання пам'яті 64 MiB
Вхідні дані #1
3
6 7
1 2 1
2 3 1
3 6 1
1 4 10
4 3 10
2 5 10
5 6 10
2
2 3
5 5
1 2 1
1 3 2
2 4 1
3 4 2
4 5 1
1
2
5 5
1 2 1
1 3 2
2 4 1
3 4 2
4 5 1
1
4
Вихідні дані #1
42
8
No safe route
Джерело 2011 Benelux Algorithm Programming Contest, Preliminaries, Задача I