Задача

5 /7


Кратчайший путь в DAG

Теория Нажмите, чтобы прочитать/скрыть


В решениях при помощи динамического программирования важен порядок подсчета динамики (необходимо, чтобы значения, от которых зависит текущее, были подсчитаны до).
Поэтому при необходимости применения динамического программирования на ориентированных ациклических графах необходимо изначально построить топологическую сортировку графа. Затем считать динамику, перебирая вершины в порядке построенной топологической сортировки (в зависимости от задачи порядок обхода может быть как от истоков к стокам, так и наоборот).
 
 

Задача

Дан ориентированный взвешенный ациклический граф. Требуется найти в нем кратчайший путь
из вершины s в вершину t.

Входные данные:
Первая строка входного файла содержит четыре целых числа n, m, s и t - количество вершин, ребер графа, начальная и конечная вершина соответственно (1 <= n <= 100000; 0 <= m <= 200000; 1 <= s, t <= n).
Следующие m строк содержат описания ребер по одной на строке. 
Ребро номер i описывается тремя целыми числами bi, ei и wi - началом, концом и длиной ребра соответственно (1 <= bi, ei <= n; |wi| <= 1000). 
Граф не содержит циклов и петель.

Выходные данные:
Первая строка выходного файла должна содержать одно целое число - длину кратчайшего пути из s в t. 
Если пути из s в t не существует, выведите "Unreachable".

Примеры:
 
Входные данные Выходные данные
2 1 1 2
1 2 -10
-10
2 1 2 1
1 2 -10
Unreachable

time 1500 ms
memory 256 Mb
Правила оформления программ и список ошибок при автоматической проверке задач

Статистика успешных решений по компиляторам
 Кол-во
С++ Mingw-w6421
Комментарий учителя