与网络流相关算法

一.无源汇有上下界可行流

1.假设所有边都流满下界,将原边流量变为上界-下界

2.发现有的点流量不守恒,这样我们就要给它补流或导流。

3.新建源点和汇点,对于在下界中的流 流入>流出 的点为它导出 流入-流出 的流,否则为其补上 流出-流入 的流。

4.在新建出的图中跑最大流,如果新加的所有边都满流则可行。

二.有源汇有上下界可行流

1.添加一条从汇到源,下界为0,上界为inf的边

2.转变为无源汇有上下界可行流。

3.可行流流量=t-s无穷边跑出的流量

三.有源汇有上下界最大流

1.跑出有源汇有上下界可行流

2.在残量网络上跑出s-t最大流

3.总的最大流=可行流+ s-t最大流

四.有源汇有上下界最小流

1.跑出有源汇有上下界可行流

2.在残量网络上跑出t-s最大流

3.最小流=可行流- t-s最大流

五.有源汇有上下界费用流

1.按照有源汇可行流建图

2.跑出ss-tt费用流即为答案

六.最小割树

定义:定义一棵树T为最小割树,如果对于树上的所有边(s,t),树上去掉(s,t)后产生的两个集合恰好是原图上(s,t)的最小割把原图分成的两个集合,且边(u,v)的权值等于原图上(u,v)的最小割

构造:

1.在当前点集中随意选取两个点,求出它们在原图上的最小割,连接两点的边权即为它们的最小割

2.最小割将当前点集割为两个集合,递归处理。

查询:

原图上u,v两点最小割就是最小割树上u到v的路径上权值最小的边

原文地址:https://www.cnblogs.com/lnsyphy/p/12212984.html