上下界网络流
•参考资料 [1]: 上下界网络流学习笔记 [2]: 上下界网络流问题 [3]: 上下界网络流 •理解 重在处理下界的限制。 对于一条边$u->v$,下界为$l$,上界为$r$。我们可以将这条边变为上界为$r-l$,下界为$0$。 相当于在可行流的基础上每条边的流量都减小了$l$。但是这样做了之后,流量却不守恒了。 流入$v$的流量少了$l$,流出$u$的流量也少了$l4。 所以要增加一个叫附加流的东西,使得这个附加流和我们的初始流合并之后满足流量守恒 即: 如果某个点在所有边流量等于下界的初始流中满足流量守恒,那么这个点在附加流中也满足流量守恒, 如果某个点在初始流中的流入量比流出量多$x$,那么这个点在附加流中的流出量比流入量多$x$. 如果某个点在初始流中的流入量比流出量少$x$,那么这个点在附加流中的流出量比流入量少$x$. $x的值$可以枚举x的所有连边求出。比较方便的写法是开一个数组$du[]$,在输入边的时候,对于出点$u$,$du[u]-=l$,对于入点$v$,$du[v]+=l$ $du[i]$表示i在初始流中的流入量-流出量的值,那么$du[i]$的正负表示流入量和流出量的大小关系 建立一个超级源点$S$和超级汇点$T$,然后枚举所有的点$i$, 如果$du[i]<0$,则加$(i,T,-du[i])$,如果$du[i]>=0$,则加$(S,i,du[i])$