B. Сам кратчайший путь
Дан неориентированный взвешенный граф. Найдите кратчайший путь между вершинами и : его вес, количество вершин и сами вершины.
Путей минимального веса может быть несколько; выведите лексикографически наименьшую последовательность номеров вершин.
Приём тот же, что был в занятии по обходу в ширину: запустить Дейкстру из финиша, а потом идти от старта, каждый раз выбирая наименьшего соседа , для которого
Такой сосед всегда есть, если вершина достижима, и шаг к нему оставляет путь кратчайшим. Массив предков тут не нужен вовсе.
Тонкость с кратными рёбрами: между парой вершин их может быть несколько, и в проверке участвует наименьший из весов.
Веса здесь строго положительны, и это существенно. При нулевых весах рёбра, удовлетворяющие равенству, могут образовать цикл из вершин с одинаковым расстоянием, и жадный спуск в нём зациклится.
Формат ввода
Первая строка содержит числа () и ().
Вторая строка содержит различные и .
Далее идут строк с рёбрами: концы и вес ().
Формат вывода
Если пути нет — одно число .
Иначе в первой строке вес пути, во второй — количество вершин , в третьей — номеров.
Примеры
4 4 1 3 1 2 1 2 3 2 3 4 5 4 1 4
3 3 1 2 3
2 0 1 2
-1