Дан взвешенный неориентированный граф из n вершин и m ребер. Найдите кратчайший путь из вершины s в вершину t, либо определите, что пути не существует.
Выходные данные
В первой строке выведите остаток от деления длины кратчайшего пути на 1000000007 (109 + 7), если путь существует, и -1, если пути не существует.
В случае, если путь существует, во второй строке выведите целое число k —количество вершин в кратчайшем пути из вершины s в вершину t; в третьей строке выведите k чисел, разделенных пробелами — вершины кратчайшего пути в порядке посещения. Первая вершина должна быть вершиной s, последняя — вершиной t. Если существует несколько кратчайших путей, выведите любой.
Примечание
Путем из вершины s в вершину t называется последовательность вершин v0, ..., vk, такая что v0 = s, vk = t, и для любого i от 0 до k - 1 вершины vi и vi + 1 соединены ребром.
Длиной пути называется сумма длин ребер между vi и vi + 1 для всех i от 0 до k - 1.
Кратчайшим путем из s в t называется путь, длина которого минимальна среди всех возможных путей из s в t.
| № | Входные данные | Выходные данные |
|
1
|
4 4
1 4 2
1 2 0
2 3 0
3 4 0
1 4
|
3
4
1 2 3 4
|
|
2
|
4 3
1 2 4
2 3 5
3 4 6
1 4
|
112
4
1 2 3 4
|
|
3
|
4 2
1 2 0
3 4 1
1 4
|
-1
|