考虑 Hall's theorem,如果存在黑点集 $U$
(显然 $|U| \leq \frac{n}{2}$
),使得它的邻集 $\delta(U)$
中的白点数量 $< |U|$
,则 No.
而 $\delta(U)$
中最多有 $|\delta(U)| - (\frac{n}{2} - |U|)$
个白点,也就是要找 $U$
使得 $|\delta(U)| < \frac{n}{2}$
.
(卡在这里好久,最终在 CF 上 PM 了 koosaga,他回信给了提示)
实际上,考虑 $U' = V \setminus U \setminus \delta(U)$
,因为 $|U| \leq \frac{n}{2}$
, $\delta(U) < \frac{n}{2}$
,所以 $U' \neq \emptyset$
. 所以实际上 $\delta(U)$
是 $U$
和 $U'$
的点割。另一方面,考虑任何一个点割 $X - C - Y$
,总有 $|X| \leq \frac{n}{2}$
或者 $|Y| \leq \frac{n}{2}$
. 所以就是要问最小点割是否 $< \frac{n}{2}$
.
只要暴力枚举两个点后最大流就行。