Ближайший склад

Просмотр в формате PDF

Submit solution


Очки: 130
Ограничение по времени: 2.0s
Ограничение по памяти: 256M

Автор:
Problem types
Allowed languages
C++, Python

Логистическая сеть компании состоит из n населённых пунктов, соединённых m двусторонними дорогами. Для каждой дороги известно время доставки между двумя пунктами.

В некоторых пунктах уже расположены склады.

Для каждого пункта требуется определить минимальное время, за которое груз может быть доставлен из ближайшего склада в этот пункт. Для пунктов, в которых склад уже есть, ответ равен 0.

Если до какого-то пункта невозможно добраться ни от одного склада, для него нужно вывести -1.

Входные данные

Первая строка содержит два целых числа n и m — количество пунктов и количество дорог.

Во второй строке содержатся целое число k — количество складов, а затем k целых чисел — номера пунктов, в которых расположены склады.

Каждая из следующих m строк содержит по три целых числа u, v, w, где u и v — пункты, соединённые дорогой, а w — время доставки по этой дороге.

Гарантируется, что дороги двусторонние.

Выходные данные

Выведите n целых чисел — минимальные времена доставки от ближайшего склада до пунктов 1, 2, ..., n.

Если некоторый пункт недостижим ни от одного склада, выведите для него -1.

Ограничения

  • 1 <= n <= 200000
  • 0 <= m <= 300000
  • 1 <= k <= n
  • 1 <= u, v <= n
  • 0 <= 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

Комментарии

Еще нет ни одного комментария.