来自: https://blog.youkuaiyun.com/linkfqy/article/details/74779656
无源汇上下界可行流
构建虚拟源点SS,虚拟汇点TT
若i点原来 入>出,则SS向i连一条容量为其差值的边
若i点原来 出>入,则i向TT连一条容量为其差值的边
因为一条边最终流量等于 下界+新图对应流量,原来流量不平衡的点需要用虚拟源汇来补偿流量
因为当且仅当SS的所有连边都满流时有解
所以刷SS到TT的最大流即可
前面提过,一条边最终流量等于 下界+新图对应流量,根据这个可以求一些题目的答案
有源汇上下界可行流
(给定源汇是S和T,虚拟源汇是SS和TT,不要混淆起来!)
考虑连一条T到S的无限制的边
那么有源汇就转化成了无源汇
值得一提的是,如果想要知道可行流的流量,可以直接看T到S那条新加边的流量(根据流量守恒)
有源汇上下界最大流
先刷出一个可行流
如果有解,那么SS的所有边都满流了,也就完成了它的使命
接下来只需要刷S到T的最大流即可
(接下来S到T不管怎么变,都影响不了SS的出边,所以一直是满足流量守恒的)
(而且这是残量网络,不用考虑会突破下界)
不过我个人还是习惯把SS,TT的所有边以及T到S的那条边删去,这样感觉清爽一点
答案是可行流流量+S到T最大流流量
有源汇上下界最小流
还是要先刷出可行流
和最大流一样的道理,此时需要把S到T的流量尽量减小
可是……可是好像没有这种操作啊(脸红
考虑反向弧的本质:反向弧增加意味着正向弧减少
所以刷T到S的最大流
答案是可行流流量-T到S最大流流量