Если бы вы могли решать задачи по кратчайшему пути с отрицательными весами, вы бы нашли самый длинный путь, оба из которых эквивалентны, это можно сделать, указав вес -w вместо w
Стандартным алгоритмом для отрицательных весов является алгоритм Беллмана-Форда . Однако алгоритм не будет работать, если в графе есть такой цикл, что сумма ребер отрицательна. На графике, который вы создаете, все такие циклы имеют веса отрицательной суммы, поэтому алгоритм не будет работать. Если, конечно, у вас нет циклов, в этом случае у вас есть дерево (или лес), и проблема решается с помощью динамического программирования.
Если мы заменим вес w на m-w, что гарантирует, что все веса будут положительными, то самый короткий путь можно найти с помощью стандартных алгоритмов. Если кратчайший путь P в этом графе имеет k ребер, то длина равна k * m-w (P), где w (P) - длина пути с исходными весами. Этот путь не обязательно является самым длинным, однако из всех путей с k ребрами P является самым длинным.