差分约束系统
http://www.cnblogs.com/sysuwhj/archive/2011/01/26/1945773.html
差分约束题目有两种,一种求最大值,另外一种求最小值。
(1)当题目是求满足给定不等式的最小值时,就是求图的最长路。
建图方式如下:a – b >= c,对应于边b –> a w(b, a) = c, 然后求最短路;判断条件是:d[v] <= d[u] + w(u, v), 初始化d[]为-INF. 这样求出的d[]就是满足条件的最小值。原因很简单,因为d[i] 是从-INF开始增大,根据不等式逐渐增大,当满足所有不等式时,那么d[i]肯定是最小的了。
(2)当题目是求满足给定不等式的最大值时,就是求图的最短路。
建图方式如下:a – b <= c,对应于边b –> a w(b, a) = c, 然后求最长路;判断条件是:d[v] >= d[u] + w(u, v), 初始化d[]为INF.这样求出的d[]就是最大值。原因和上面一样,因为是从INF逐渐减小的,当满足完所有条件时,就停止。那么d[i]是最大的了。