其他分享
首页 > 其他分享> > 差分约束 1

差分约束 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