网络流口糊

板子

无源汇上下界可行流

  1. 令所有边达到其下界,设 \(W'(i)\)\(i\) 点目前积蓄/亏损的流量(流量不平衡)。所有边改为 \([0,up-down]\)
  2. 设立超级源点 \(s'\) 超级汇点\(t'\) ,对于 \(W'(i)>0\) 的点,和 \(s'\) 连一条容量为 \([0,W'(i)]\)的边,否则与 \(t'\) 连一条容量为 \(-W'(i)\) 的边。
  3. 跑最大流,若所有以 \(s',t'\) 作为端点的边(后文称之附加边)均满流,则存在合法解。

有源汇上下界可行流

只是多了一个不需满足流量平衡的 \(s,t\)。从 \(t\)\(s\) 连一条容量为 \([0,INF]\) 的边。
然后跑无源汇上下界可行流,此时可行流大小为边 \([t,s]\) 的流量。

有源汇上下界最大流

已知可行流,那么最大流即为在可行流的基础上增广得到。
删去所有的附加边。跑 \((S,T)\) 的最大流即可。
应在跑完可行流后的残留网络上跑。不能在原网络跑。
总流量为 原先的可行流流量 + 增广多出来的流量。

有源汇上下界最小费用可行流

在上下界可行流的基础上增加费用即可。
不过附加边的代价为 \(0\) ,在计算完可行流代价后,加上所有的下界乘代价即可。

有源汇上下界最小费用最大流

同有源汇上下界最小费用可行流,记得判边权。

有源汇上下界最小流

退流。
跑出任意一条可行流,然后由 \(t'\)\(u'\) 的最大流。
可行流流量减去 \([t',u']\) 流量即为最小流。

另一类上下界可行流建边方法

对于边 \((u,v)\)
\(v\)\(u\) 建一条容量为 \(up-down\) 的边。
\(s'→v\)流量为 \(down\) 的边,
\(u→t'\)流量为 \(down\)的边。

两种建边其实很相似。前者依靠类似闭合子图的方法进行判定,后者则直接将流量架空,相当于赋上势能。

建模

待填....

posted @ 2022-03-18 15:01  Hencecho  阅读(22)  评论(0编辑  收藏  举报