上下界网络流总结

首先任何有下界的边都要先记录下界的入度和与出度和,记作 i n in o u t out
然后对于点 i i
如果 i n [ i ] > o u t [ i ] in[i]>out[i] ,则建边 ( s s i , i n [ i ] o u t [ i ] ) (ss\to i,in[i]-out[i])
如果 i n [ i ] < o u t [ i ] in[i]<out[i] ,则建边 ( i t t , o u t [ i ] i n [ i ] ) (i\to tt,out[i]-in[i])
下面再分情况讨论其他的建边。

Case #1:无源汇上下界可行流

s s ss t t tt 的最大流。

结论:如果能使 s s ss 临边全部满流就存在可行流。对应每条边在原图的流量是下界+流过去的流量。

Case #2:有源汇上下界可行流

建边 ( t s , + ) (t\to s,+\infty) ,跑 s s ss t t tt 的最大流。

结论同上:如果能使 s s ss 临边全部满流就存在可行流。原图的总流量就是边 ( t s , + ) (t\to s,+\infty) 的流量。对应每条边在原图的流量是下界+流过去的流量。

Case #3:有源汇上下界最大流

建边 ( t s , + ) (t\to s,+\infty) ,跑 s s ss t t tt 的最大流。记边 ( t s , + ) (t\to s,+\infty) 的流量为 f 1 f1

断掉边 ( t s , + ) (t\to s,+\infty) ,跑 s s t t 的最大流 f 2 f2

结论同上:如果能使 s s ss 临边全部满流就存在可行流。原图的总流量就是 f 1 + f 2 f1+f2 。对应每条边在原图的流量是下界+流过去的流量。

Case #4:有源汇上下界最小流

先不建边 ( t s , + ) (t\to s,+\infty) ,跑 s s ss t t tt 的最大流看是否可行。

然后建边 ( t s , + ) (t\to s,+\infty) ,跑 s s ss t t tt 最大流。此时边 ( t s , + ) (t\to s,+\infty) 的流量就是原图最小流。对应每条边在原图的流量是下界+流过去的流量。

发布了367 篇原创文章 · 获赞 239 · 访问量 4万+

猜你喜欢

转载自blog.csdn.net/Ike940067893/article/details/103395067