差分约束系统有两种方式可以求解,最短路和最长路。当我们把不等式整理成d[a]+w(a,b) <= d[b]时,我们求最长路。整理成d[a]+w(a,b) >= d[b]时,我们求最短路。
最短路求得是最大值,最长路求得是最小值。(w(a,b) 表示任意一条a到达b的路径 )
想象一下我们求最短路径的时候是不是有 d[a] + w(a,b) >= d[b] 。意义是任意一条a到b的路径都大于等于a到b的最短路径。
所以最短路要求的是,所有满足要求的式子中的最大值。(满足这个最大值的w(a,b)是最小的)
最长路径同理。
所以以后碰到全是这类式子的题,就可以转化成最短路或者最长路的问题来求解。
最短路:Bellman-Ford算法、Dijkstra算法。
最长路:把图中边的权值变成负数,再求最短路径,取反就是最长路,