带上下界的网络流

之前学到手纯正网络流,但是当然真正比赛不可能这么简单啦。自然带带下界。那怎么办呢?

根据ACM—ICPC程序设计 图论及应用书上提及:

假设有一个流图如下图 5.6:
no

求满足S到T的最大流。

我们将建立超级源汇X,Y操作如下图:
这里写图片描述

将所有边的下界都链接到X,然后减去原边下界的值。比如S-A原来上界是6下界是2,那么去掉下界后,S-A的上界应应该变为4.并相应链接Y-A值也为下届。其他边都做相同操作就有了图5.9的新图。其实这和原图是等价的。

上面的操作是假设成下界被流满,那么在满足下界最低要求后再求新图的最大流,两次最大流的值想加即为满足要求的最大流。

怎么确定下界是否被流满?就是新加入的超级源汇的功劳,第一次最大流从Y到X,这里要加一条T-S无限上界的边(因为第一次最大流是Y-X,翻过来的,所以你在T-S要加反向无限制的边保证Y出去的边都能流出)。只要第一次最大流可以满足Y的出边都流满了,就能确定原图的最大流是一定存在的。因为X的入边流量和 和 Y的出边流量和 是想等并且表示为原图的所有下界和。既然下界最低要求满足,自然就有最大流的解。最后去掉T-S这个边,从S-T再做一次最大流,也就表示了从剩余网络找一次最大流,相当于在满足了最低要求最大流后是否还能再增大。说到这里也就明白为什么原图的上界要构新图要减去下界了。

这本书说的这个办法很巧,也用实例验证了。留底做以后参考回忆。

评论 1
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

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

抵扣说明:

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

余额充值