差分约束 1
作者:互联网
//去你妈的,关于\(SPFA\),它活了
原理
其实\(SPFA\)就是干这玩意的
由于差分约束的标准形式$$x_i-x_j\leq b$$
和最短路的三角不等式极为相似,(三角不等式是\(Bellman-Ford\)最短路算法原理)
于是考虑直接建图跑最短路
建图
我学的建图方式是:
对于\(x_i-x_j\leq b\)这个式子:
连一条\(j\to i\)的有向边,边权为\(b\)
这种建图方式配套的源头是\(n\)
为防止不连通,肯定是要建一个超级源点\(n+1\)
对于每一个点要建出有向边\(n+1\to i\),边权为\(0\)
判解
如果无解,跑最短路表现出来是有负环
这个时候使用\(SPFA\)判一下有无负环即可
但是如果要找解,就得从出发点做一遍\(SPFA\)
转化
就是不一定所有的差分约束不等式都是标准形式
所以对于每种不同的差分约束还需要特殊判断
\(x_i+b=x_j\)等价于\(x_i-x_j\leq -b \and x_j-x_i\leq b\)
\(x_i+b\geq x_j\)等价于\(x_i-x_j\leq -b \and x_j-x_i\leq b\)
\(x_i+b<x_j\)等价于\(x_i-x_j\leq b-1\)
\(x_i+b>x_j\)等价于$ x_j-x_i\leq b-1$
标签:不等式,短路,SPFA,差分,约束,leq,建图 来源: https://www.cnblogs.com/22222222STL/p/16539724.html