Маршрут экспедиции

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

Submit solution


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

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

спедиция исследует сеть горных троп, соединяющих лагеря в разных точках хребта. Каждая тропа двусторонняя и имеет известную длину.

Дано n лагерей и m горных троп между ними. Необходимо найти маршрут минимальной суммарной длины из лагеря s в лагерь t и вывести его.

Если существует несколько маршрутов с одинаковой минимальной длиной, можно вывести любой из них. Если добраться из s в t невозможно, выведите -1.

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

В первой строке заданы четыре целых числа n, m, s, t — количество лагерей, количество троп, начальный лагерь и конечный лагерь.

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

Все данные подаются через стандартный ввод.

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

Если маршрут существует, выведите:

  • в первой строке его суммарную длину;
  • во второй строке количество лагерей в маршруте k;
  • в третьей строке номера лагерей в порядке прохождения — от s до t.

Если маршрута не существует, выведите единственную строку -1.

Вывод должен осуществляться в стандартный вывод.

Ограничения

  • 1 <= n <= 100000
  • 0 <= m <= 300000
  • 1 <= s, t <= n
  • 1 <= u, v <= n
  • 0 <= w <= 1000000

Примеры

Пример 1

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

2 1 1 2
1 2 7

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

7
2
1 2
Пример 2

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

4 2 1 4
1 2 5
2 3 1

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

-1

Комментарии

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