Processing math: 2%

ARC161F

题面

给定一张含 n 个点,nk 条边的图 G=(V,E),判断是否满足 \forall X \subsetneqq V,X\neq \varnothingX 导出子图的边数 \div |X| < k

nk\le 5\times 10^4

题解

首先要发现这是一个最大权闭合子图的问题,对于一条边 (x,y),其贡献为 1 ,但是选了这条边就必须选点 xy,而选一个点的代价为 k ,建立二分图之后,看这个图的最小割是否 \ge 0

但是直接做会有一个问题,就是我们无法排除 XV\varnothing 的情况,接下来我们就需要通过一些操作排除这两个特殊情况。

我们先强制会选择第一条边,也就是保留这一条边不被割(可以通过设置 S\to a_1 的容量设为无穷大来防止被割)。此时我们如果可以找到一个方案,使某一条边被舍弃了(被割了),此时这个包含第一条边的方案就是一个非全集、空集且最小割 \ge 0 的方案,那么此时图就是不合法的。否则就不存在一个包含第一条边且不为全集的方案,使其最小割 \ge 0

如何实现?首先要分析一下我们是如何求解最大权闭合子图方案的:

  • 对于二分图左边的点,若 x 可以从 S 遍历到,就把 x 对应的给保留(不被割以得到贡献)。
  • 对于二分图右边的点,若 x 可以从 S 遍历到,就把 x 对应的给删去(不被割而不承受代价)。

但是我们实际上是可以有其他方案的,就比如该二分图上个某个子图 S\to \{A\}\to \{B\}\to T,其中 \{A\},\{B\} 分别是左右边的一个点集,其中 S\to \{A\},\{B\}\to T 的可用流量都是 0,那么按上面的选法我们割掉的是 S\to \{A\} 的边,实际上我们也可以选择割掉 \{T\}\to T 的边。

所以如果我们按照某个点是否能从 S 到来判断是否割掉该对应的边 ,实际上是尽可能的让左边的边被割。

回到原问题,如果我们要看是否存在一个方案,使某一条边被舍弃了(被割掉),那么我们就在跑完最小割之后对每一个左边的点考虑能不能从 S 遍历到他,若不可以,那么按照我们的分析,原图就不合法。

之后我们再强制不选第一条边(也就是流量为 0)。同样的,如果存在一个此时我们如果可以找到一个方案,使某一个点被选了(也就是对应的边被割了),此时这个不包含第一条边的方案就是一个非全集、空集且最小割 \ge 0 的方案,那么此时图就是不合法的。否则就不存在一个不包含第一条边且不为空集的方案,使其最小割 \ge 0

此时如果我们按照某个点是否能到 T 到来判断是否割掉该对应的边 ,实际上是尽可能的让右边的边被割。

如果上面两种都找不到,那么就是合法的图了。

启发

  • 一个最大权闭合子图的问题。
  • 探究了最大权闭合子图(最小割)选方案的问题。
  • 对于一个要排除全集和空集的情况,我们可以强制某一个元素选或者不选。

本文作者:qwq123

本文链接:https://www.cnblogs.com/qwq-123/p/18045747

版权声明:本作品采用知识共享署名-非商业性使用-禁止演绎 2.5 中国大陆许可协议进行许可。

posted @   qwq_123  阅读(6)  评论(0编辑  收藏  举报
💬
评论
📌
收藏
💗
关注
👍
推荐
🚀
回顶
收起
点击右上角即可分享
微信分享提示