有源汇上下界最大流

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

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

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

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

评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值