上下界网络流
无源汇上下界可行流
我们需要保证每个边的下界一定被流满,于是我们可以先让下界流满,在用一些方法进行调整(在原图上加一些流, 使得流量平衡)
有源汇上下界可行流
从超级汇点向超级源点连一条流量为无限的边, 问题就转化成了无源汇可行流了
需要的流量就是 \(s -> t\) 的残余网络
有源汇上下界最大(最小)流
我们发现用上面方法求出来的是一个可行流但不一定最大(最小)
于是我们再从原图跑一遍网络流,使它最大(最小)
如果是求最大流, 答案就是原流 + 从 \(s -> t\) 新增广的流
如所是求最小流, 答案就是原流 - 从 \(t -> s\) 新增广的流
这里涉及一些细节问题
跑可行流时, \(s -> t\) 的残余网络上才是这次可行流需要的增广的流,再跑最大(最小)流时,需要把 \(s -> t\) 断掉
具体参见这两个题吧,注意代码细节