一个极度对称优美的做法。
首先观察 ABC,发现 A 和 B 同构,所以尝试把 C 放在中间去考虑。令 xu 表示 u 的选择,列出对于 uwv 一条边,所有 xu,xv 的矩阵 Wu,v:
BCA012A101C210B
最小割只能解决对于 xu≤a,xv≥b 的变量增加花费,也就是对于矩阵右下角和左上角加划分,显然无法构造。进一步观察,发现对于把 C 作为坐标轴原点,那么图像就是 ∣xu+xv∣:
B(+1)C(0)A(−1)∣xu+xv∣012A(−1)101C(0)210B(+1)
不能直接割所以就只能拆点,最小割只能做 ∣x−y∣ 情形,变成这种情况也就是 ∣xu−(−xv)∣,所以会那么这个式子可以是 xu−(−xv),−(xu)−xv,所以考虑对于一个 xu 用两个点 Au,Bu,分别表示他在作为 +xu 和 −xu 出现的贡献点,那么对于 xu 选择 −1 也就是把两个点反过来。那么我们钦定:
- Au 选到 S 集合,Bu 选到 T 集合表示选择了颜色
A。
- Au 选到 T 集合,Bu 选到 S 集合表示选择了颜色
B。
- Au,Bu 同时选到一个集合表示选择了颜色
C。
所以对于 uwv 只需要交叉连双向边 AuwBv,BuwAv,即可做到当 u,v 同时是 A 或者 B,则会割掉两条边,否则不会,如果其中一个是 C,则只会割掉一条边。
最后考虑如果两个 C 有边,但是一个分配到 S 一个分配到 T 则会把所有边割掉,但是最小割会自动规避掉这种情况,因为显然这样不是最小割。
钦定作为 A 或者 B 就链接 ∞ 边钦定选到 S 集合或者 T 集合即可。
本文同步自洛谷专栏,保留原始正文与发布时间。在洛谷查看原文 ↗