稍微学一下····
对于无源汇的图一定有流量平衡∑f(u,i)=∑f(i,v)
如果f(u,i)>=B(u,i),则B(u,i)为流量下界。
定义f(u,i)=B(u,i)+g(u,i)
则 ∑B(u,i)+∑g(u,i)=∑B(i,v)+∑g(i,v)
即∑B(u,i)-∑B(i,v)=M(i)=∑g(i,v)-∑g(u,i)
M(i)为该点i的入流下界之和-出流下界之和。
当M(i)>0时,∑g(i,v)=∑g(u,i)+M(i) 我们可以使超级源点S建一条到i的流量为M(i)的边。
反之,∑g(i,v)-M(i)=∑g(u,i) 建一条i道T的流量为-M(i)的边。
然后跑最大流
sgu194:无源汇有上下界最大流 按上述建图即可
sgu176::有源汇有上下界最小流。 建一条t到s的,流量为a的边(下界0),使得它构成一个无源汇的图,使得最大流最小,就二分这个a,求a最小。
有源汇有上下界最大流:同理,二分下界a,上界inf,按第一题求解
bzoj3876:有源无汇有上下界最小费用流。 思路大致和网络流相同,首先所有点到s建一条inf,cost=0的边(相当于新建一个汇点t,t再到s连边),每条边建inf,cost=w的边
为保证下界,对于每条u->v,S到v建一条流量1,费用w的边;u到T建一条流量1,费用0的边(应该可以交换)