有上下界的网络流

时间:2022-06-17 09:42:31

稍微学一下····


对于无源汇的图一定有流量平衡∑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的边(应该可以交换)