//去你妈的,关于\(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
本站声明: 1. iCode9 技术分享网(下文简称本站)提供的所有内容,仅供技术学习、探讨和分享; 2. 关于本站的所有留言、评论、转载及引用,纯属内容发起人的个人观点,与本站观点和立场无关; 3. 关于本站的所有言论和文字,纯属内容发起人的个人观点,与本站观点和立场无关; 4. 本站文章均是网友提供,不完全保证技术分享内容的完整性、准确性、时效性、风险性和版权归属;如您发现该文章侵犯了您的权益,可联系我们第一时间进行删除; 5. 本站为非盈利性的个人网站,所有内容不会用来进行牟利,也不会利用任何形式的广告来间接获益,纯粹是为了广大技术爱好者提供技术内容和技术思想的分享性交流网站。