0%

差分约束系统

问题:有 $n$ 个变量 $x_1,x_2,\cdots x_n$,以及一系列限制 $x_{v_i} - x_{u_i}\le w_i$($w_i$ 可以为任意实数)。求出一组合法解或判定无解。

回顾最短路的概念:

对于一张包含 $n$ 个点的有向图,设 $dis_i$ 表示从 $1$ 到 $i$ 的最短路长度,令 $dis_1 = 0$。则对于每条边 $(u_i,v_i,w_i)$,显然会有 $dis_{v_i} \le dis_{u_i} + w_i$,也就是 $dis_{v_i} - dis_{u_i} \le w_i$。

注意到 $dis_{v_i} - dis_{u_i} \le w_i$ 与 $x_{v_i} - x_{u_i} \le w_i$ 形式十分相似。此外,如果 $\{x_1,x_2,\cdots x_n\}$ 是差分约束系统的一组解,那么 $\{x_1+d,x_2+d\cdots x_n+d\}$ 也是差分约束系统的一组解。

建一张包含 $n$ 个的结点的有向图,对于一个限制 $x_{v_i} - x_{u_i} \le w_i$,连一条从 $u_i$ 到 $v_i$ 边权为 $w_i$ 的边。令 $dis_1 = 0$,求出 $1$ 到图中每个点的最短路。如果图中没有负环,那么 $\{ x_i = dis_i \}$ 为该差分约束系统的一组解;否则,该差分约束系统无解(可以将负环上的限制加起来,得到一个 $x_i - x_i \le c(c<0)$ 的限制)。