有源汇上下界最大流

设题目给的图是G,其源点汇点分别是s,t

假设我们先求有源汇上下界可行流,我们发现此时跟无源汇上下界可行流的差别就是s,t没有流量守恒,于是我们添加一条边(t,s),其容量限制为无穷,设添加边后的图为G1,那么G的可行流与G1的可行流(注意G1没有源点汇点,所以每个点都满足流量守恒)一一对应(对于G的一个可行流f,令G1的边(t,s)的流量为|f|,其余边的流量与G中对应的边的流量相同,得到了G1的一个流f,不难知道ff一一对应),于是就转化成了无源汇上下界可行流:对G1添加虚拟源点汇点S,T得到图G2,对G2跑dinic,此时得到G2的最大流f满足S的每条出边都是满的,T的每条入边都是满的(如果不满足,那么说明有源汇上下界可行流无解,有源汇上下界最大流肯定也无解了)

现在尝试解决有源汇上下界最大流,先直接给出做法:设上述dinic过程跑出的G2的最大流f诱导出的残存网络为G3,在G3中删掉(t,s)这条边后将s,t当做源点和汇点跑dinic,设跑出的最大流为f1,那么答案就是|f|+|f1|

证明:此时跑出来的增广路一定不包含(t,s),S,T(因为增广路是简单路径,所以不包含(t,s);因为G3S只有入边所以一旦进入S就出不去了,不可能到达t,所以不包含S;因为G3T只有出边所以无法进入T,所以不包含T),这个dinic结束之后,s,t流量不守恒,将ff1相加,并令G2(t,s)的权值为|f1|,此时不难验证仍然得到了G2的一个最大流;对于G2的任何一个最大流f2,将f2f相减得到f3

posted @   最爱丁珰  阅读(8)  评论(0编辑  收藏  举报
相关博文:
阅读排行:
· TypeScript + Deepseek 打造卜卦网站:技术与玄学的结合
· 阿里巴巴 QwQ-32B真的超越了 DeepSeek R-1吗?
· 【译】Visual Studio 中新的强大生产力特性
· 10年+ .NET Coder 心语 ── 封装的思维:从隐藏、稳定开始理解其本质意义
· 【设计模式】告别冗长if-else语句:使用策略模式优化代码结构
历史上的今天:
2023-09-03 Miller Rabin与Pollard Rho
2021-09-03 墨墨的等式【同余最短路模板题】
点击右上角即可分享
微信分享提示