- 三角不等式
- 刷完最短路对于任意边\((u,v)\),满足\(dist_u+w(u,v)\ge dist_v\)
- 差分约束系统
- 一组形如\(x_a-x_b\le c\)的不等式
- 形式恰好与三角不等式相同,因此可以用最短路算法求解
- 可以连一条边权为\(c\)的边\((b,a)\),将\(dist_a-dist_b\)限制在\(c\)的范围内
- 当边\((u,v)\)属于最短路径时,\(dist_a-dist_b\le c\)取到等号,即\(dist_a-dist_b\)取到最大值
- 所以\(\le\)型的不等式刷最短路,得到最大值
- 同理\(\ge\)型的不等式刷最长路,得到最小值
- 根据题意将所有等式化成一样的形式,刷最短/长路即可
- Tips
- 负环/正环:无解(SPFA入队N次)
- 图不连通怎么办?
- 直接将所有点入队,根据题意给\(dist_i\)初值
- \(dist\)没有得到任何更新:任意解