题目链接 (Luogu) https://www.luogu.org/problem/P3756 (BZOJ) http://lydsy.com/JudgeOnline/problem.php?id=4823 题解 有点神仙的最小割题。 考虑题目里的图形,如果我们用四种颜色对棋盘进行染色,奇数行依次染 \(0,1,2,3,0,1,2,3...\) , 偶数行依次染 \(3,2,1,0,3,2,1,0...\) 则条件可以转化为不能出现相连的 \(4\) 个颜色互不相同的块。 那么可以建一个四层的图,对于每条两侧都有关键点的特殊边,按照 \(S\rightarrow 3\rightarrow 0\rightarrow 1\rightarrow 2\rightarrow T\) 的顺序连边,其中 \(S\rightarrow 3\) 连 \(3\) 色点的点权, \(0\rightarrow 1\) 连两个关键点权值的最小值, \(2\rightarrow T\) 连 \(2\) 色点的点权。不出现相连的四个颜色互不相同的块等价于不存在从 \(S\) 到 \(T\) 的路径。 然后跑最小割即可。 因为是分层图,所以 dinic 跑得很快(复杂度应该是 \(O(n\sqrt n)\) ),可以通过此题。 代码 #include<bits/stdc++.h> #define llong