Путь с заправками
Просмотр в формате PDFДальнобойщик едет по сети дорог, состоящей из n городов и m двусторонних дорог между ними. Для проезда по каждой дороге требуется ровно w литров топлива.
Грузовик имеет бак объёма C литров, и в баке не может быть больше топлива, чем C.
Некоторые города оборудованы заправками. Если дальнобойщик приезжает в такой город, бак сразу полностью заполняется до C литров.
В начале маршрута водитель находится в городе s с полным баком и хочет добраться до города t.
Требуется определить минимальное суммарное количество топлива, которое будет израсходовано в пути. Иными словами, нужно минимизировать сумму значений w по всем дорогам маршрута. Автоматические дозаправки в городах с заправками не добавляют ничего к ответу, они лишь восстанавливают бак до полного.
Если добраться из s в t невозможно, выведите -1.
Входные данные
Первая строка содержит три целых числа n, m, C — количество городов, количество дорог и объём бака.
Вторая строка содержит два целых числа s, t — начальный и конечный города.
Третья строка содержит целое число r — количество городов с заправками, затем r целых чисел — номера этих городов.
Каждая из следующих m строк содержит по три целых числа u, v, w — описание дороги между городами u и v, для проезда по которой требуется w литров топлива.
Выходные данные
Выведите одно целое число — минимальное суммарное количество израсходованного топлива, необходимое, чтобы добраться из s в t, либо -1, если это невозможно.
Ограничения
2 <= n <= 500000 <= m <= 2000001 <= C <= 10001 <= s, t <= n0 <= r <= n1 <= u, v <= n1 <= w <= C
Примеры
Пример 1
Входные данные
2 1 5
1 2
0
1 2 3
Выходные данные
3
Пример 2
Входные данные
3 3 4
1 3
1 2
1 2 4
2 3 4
1 3 4
Выходные данные
4
Комментарии