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