K. Длиннейший путь в ациклическом графе
Дан ориентированный ациклический граф с весами любого знака. Найдите наибольший вес пути из вершины 1 в вершину .
В общем графе длиннейший путь искать бесполезно: задача NP-полна, а с положительными циклами ответа просто нет. В ациклическом — считается за .
Приём: топологическая сортировка плюс динамика. Перебираем вершины в топологическом порядке; к моменту, когда очередь доходит до , все входящие в неё рёбра уже обработаны:
Вершины, недостижимые из первой, в переборе не участвуют — иначе они внесут в максимум мусор.
Это тот же приём, что мы применяли к конденсации во втором занятии по обходу в глубину, и он же — основа динамики по ациклическому графу вообще. Форда — Беллмана тут не нужно: ациклический граф разбирается быстрее.
Формат ввода
Первая строка содержит числа () и ().
Далее идут строк с рёбрами: начало, конец и вес (). Граф ациклический; возможны кратные рёбра.
Формат вывода
Одно число — наибольший вес пути из 1 в , или , если пути нет.
Примеры
4 4 1 2 5 2 4 5 1 3 1 3 4 1
10
2 0
-1