一.无源汇有上下界可行流
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的路径上权值最小的边