Ближайший склад
Просмотр в формате PDFЛогистическая сеть компании состоит из n населённых пунктов, соединённых m двусторонними дорогами. Для каждой дороги известно время доставки между двумя пунктами.
В некоторых пунктах уже расположены склады.
Для каждого пункта требуется определить минимальное время, за которое груз может быть доставлен из ближайшего склада в этот пункт. Для пунктов, в которых склад уже есть, ответ равен 0.
Если до какого-то пункта невозможно добраться ни от одного склада, для него нужно вывести -1.
Входные данные
Первая строка содержит два целых числа n и m — количество пунктов и количество дорог.
Во второй строке содержатся целое число k — количество складов, а затем k целых чисел — номера пунктов, в которых расположены склады.
Каждая из следующих m строк содержит по три целых числа u, v, w, где u и v — пункты, соединённые дорогой, а w — время доставки по этой дороге.
Гарантируется, что дороги двусторонние.
Выходные данные
Выведите n целых чисел — минимальные времена доставки от ближайшего склада до пунктов 1, 2, ..., n.
Если некоторый пункт недостижим ни от одного склада, выведите для него -1.
Ограничения
1 <= n <= 2000000 <= m <= 3000001 <= k <= n1 <= u, v <= n0 <= w <= 1000000
Примеры
Пример 1
Входные данные
5 3
1 1
1 2 3
2 3 4
4 5 7
Выходные данные
0 3 7 -1 -1
Пример 2
Входные данные
6 6
2 2 5
1 2 0
2 3 2
3 4 0
4 5 2
5 6 0
1 6 10
Выходные данные
0 0 2 2 0 0
Комментарии