在本题中,我建了一个 3 层的分层图,对于任意的 i,将第 1 层的 i 向第 2 层的 i 连一条边权为 −ai 的边,将第 2 层的 i 向第 3 层的 i 连一条边权为 ai 的边,然后从第一层的 1 到第三层的 n 的最短路就是答案。
不难看出,SPFA 可以解决这个问题,但是,讨论区 提到了将边权加上一个较大值,使其变成非负整数,跑最短路后减去这个较大值的思路(因为增加了较大值的边一定会恰好经过 1 次),这使得可以使用 Dij 跑最短路,实测也通过了题目 结果
我好奇的是,请问这种做法是正确的吗?如果是的话,还有其他使用这个技巧的题目吗?