最近做了一道神奇的题,涉及了一些奇怪的知识,了解了一下
补:比较绕人,部分可以多读几遍
已知割集是指在网络流的一张图上,删去割集里的边后使原点与汇点不连通,并且这些边构成最小割,显然一张网络流图上有多个割集,这时就有 \(2\) 个概念去区分存在于这些割集中的边:
1.可行边: 指存在于任意割集中的的边(可看做所有割集的并)
2.必须边: 指存在于所用割集中的的边(可看做所有割集的交)
从定义可知,必须边集合是可行边集合的子集
显然,割集中的边都是满流
如果是可行边,充要条件:
\((1)\). 满流
\((2)\). 在残余网络中找不到 \(u\rightarrow v\) 的路径
如何去证明\((2)\)呢?
考虑我们有一条从 \(u\) 到 \(v\) 的路径,假设此时\(u\rightarrow v\)已经满流 (要是没满流连 \((1)\) 条件都不满足)
此时加上残量网络中的反悔边,\(u\ v\)在一个环内,发现\(u\rightarrow v\)的满流就可以沿着环流动,不破坏最小割,但是满流就被破坏了
由此我们可以看出,如果\(u\rightarrow v\)是一个可行边,他们不能在一个强连通分量里
如果是可必须边,充要条件:
\((1)\). 满流
\((2)\). 残余网络中源点能到入点, 出点能到汇点
同样来考虑证明\((2)\)
我们已知,必须边集合是可行边集合的子集,首先它们是可行边,再被我们进一步挑选成为必须边,所以它们在残余网络中已经没有了 \(u\rightarrow v\) 的路径
如果源点到不了汇点,则说明它前面一定有其他满流的边堵塞了全部流量,此时它就不是唯一的了,可以选前面的进行替代(出点到汇点同理)
由此我们可以看出,如果\(u\rightarrow v\)是一个必须边,源点和 \(u\) 必须在一个强连通分量里, \(v\) 和汇点也必须在同一个强连通分量里
此时定理就证明完了
用 \(tarjan\) 便能很便捷求出残量网络上的强连通分量,代码就不做赘述
不会 \(tarjan\) 的可以去洛谷上找板子, 还有更多神秘妙妙用法
例题:
\(1\). P4126 [AHOI2009]最小割
\(2\). P3308 [SDOI2014]LIS
标签:满流,可行,最小,汇点,割集,必须,rightarrow From: https://www.cnblogs.com/Linnyx/p/17444810.html