网络流
网络流
入门套路
1.有些一眼看上去是费用流的题,可以用二分答案网络流解决
紧急疏散evacuate
2.最小割:找到不能同时选择的限制,然后建模
happiness
找到文理不能同时选泽,然后连边
网络流与二分图
Konig 定理
最小点覆盖 = 最大匹配
对二分图跑一遍最小割,对任意一个边,必然有一个顶点被选,否则s-t连通了
DAG 最小不相交路径覆盖
给你一个DAG,求出最少需要几条不相交路径,使其经过所有点。
拆成出点和入点,建立二分图,所有边只能从出点连向入点,一开始 \(n\) 个点,每个点一个路径,每条边可以让答案减少 \(1\),所以就是 \(n\) - 最大匹配
将一个问题转化到二分图上面
1.奇偶分组 bzoj3158千钧一发
2.黑白染色 P3355 骑士共存问题
最大权闭合子图
给你一个有点权的图,在所有的闭合子图中,它所包含的子图的点的点权之和是最大的。
s 连接正点权点, t 连接负点权点,原来的边均设为INF
最小割一定会只割断和s或者t直接相邻的边,所以我们取割集S,一定合法。我们用正点权和作为最大收益,考虑每次减少亏损,所以就是求最小割。
最小割树
针对无向网络构建一棵树,树上每条边 \((s, t)\) 表示原图中 \((s, t)\) 的最小割
性质:两点最小割可用树上路径最小值表示
构建方法:分治,在分治点里面每次随机选两个点,作为源汇跑最小割,之后在最小割树上连边,然后分成 \(S\), \(T\)两部分,继续构建
正确性就不证了(我不会),好像证这个的人不多。
注意:每次是针对全图跑最小割,而不是分治点
必须边和可行边
最小割的方案不只一种,求必须边和可行边
首先必须要求满流量
如果不满流量,这条边前后一定有满流量的,一定不选择这条边
对于一条边 \((u, v)\)
必须边:残量网络上,源点能到 \(u\),\(v\) 能到汇点。
可行边:残量网络上,不存在一条 \(u\) 到 \(v\) 的路径
由于反向边的存在, 这条路径可以用 SCC 简单判断。
平面图最小割 = 对偶图最短路
在最短路上走一条边,就相当于原图割掉一条边
费用流优化建图
美食节
前缀和优化建图 志愿者招募