Shortest Paths

最短路

有时候我们需要维护一些具有传递性的关系,如相等,连通等。

初始条件往往是给定几组关系,要把所有的关系求出来。

可以把 Floyd 算法做一些调整:

但是 Dijkstra 算法要求所有边权均非负,于是就有了重赋权的技巧。

接下来证明这样做为什么是对的:

首先有定义 :

差分约束

差分约束是用来解形如 \(x_{1}-x_{2}\leqslant k\) 的若干个方程的算法。

另外,如果有负环则无解。

时间复杂度 \(\Theta(\rm SPFA)\)。

需要注意的是,最短路求的是以起始点为基准的最大解,而最长路求的是以起始点为基准的最小解。