上下界网络流
最基础的情况是无源汇上下界可行流。
无源汇上下界可行流
找到一个流函数 \(f\),满足 \(f(u,v)\in [low(u,v),up(u,v)]\)。
解决方案:利用网络流平衡流量。
首先全部流取下界,算出一个点的 \(d\):
\[d_u=\sum_{(u,v)}low(u ,v)-\sum_{(v,u)}low(v,u)
\]
然后建立超级源点 \(S\),汇点 \(T\),建立边:
- \((u,v,up(u,v)-low(u,v))\)
- \(\forall b_x>0,(S,x,b_x)\)
- \(\forall b_x<0,(x,T,-b_x)\)
本质上,源汇点起平衡流量的作用。
跑一次最大流,若最大流不满流则无解。
一个合法的 \(f=low+f'\),其中 \(f’\) 是最大流流量。
有源汇上下界可行流
设原本源汇为 \(s,t\)。
建立边 \((t,s,0,inf)\),后面指的是上下界,按上面的建立超级源汇 \(S,T\) 即可。
有源汇上下界最大流
先跑一次有源汇上下界可行流,然后撤去点 \(S,T\) 以及边 \(t\to s\)。
这一次的流量是 \(t\to s\) 的流量 \(b\)。
在跑完可行流后的图 \(G'\) 上再跑一次最大流,得到流量 \(f'\)。
最大流是 \(b+f'\)。
二分图必选点最大匹配可以通过这个解决。
有源汇上下界最小流
\(s\to t\) 的最小流是 \(t\to s\) 最大流的相反数
用 \(b\) 减去 \(G’\) 上 \(t\to s\) 的最大流即可。
费用流
算下界的时候算上费用流,超级源汇 \(S,T\) 连出去的边费用都是 \(0\) 即可。

浙公网安备 33010602011771号