文章持续更新(咕咕咕 )
在网络流的题目中,建模一定是题目中的重点+难点,
下面总结一些网络流的建模套路
一,最基础的建模:两种方案如何决策
例题:p1402 https://www.luogu.org/problemnew/show/P1402
为什么说是基础呢?因为题目中的条件很明显地指向两个方案,
对应流图中是连s还是t;
并且,要求最大满意数,就是利用网络流算法调节流量的功能,
做出一个最优的决策。
1,如何建立节点?如何连边?
网络流的建模中,流图中的每一条边都要对应题目中的一种状态,
所以,A喜欢菜品B,就将B与A连边,A喜欢房间C,就将A与C连边
注意,建立后的图一定是一个流图!(定义自行百度)
最后,s与所有菜品连边,房间与t连边;
2,容量的确定
确定容量非常重要,这题中;算法选择了一条边后,相当于满足了一个人的要求
所以,人与菜品或房间之间的边容量应为1
至于s与菜品连的边容量是多少呢?
我们不知道到底有多少人喜欢一种菜品;
后面已经有容量为1的边了,可以限制流量;
那么容量就是INF!
3,拆点的重要性
到这里,看似建模已经完成了,但是这里面有一个巨大的漏洞
试想一下,假设只有一个人,他喜欢100中菜品,喜欢100中房间
那么最大流跑出来会是多少呢?流量显然是100!
这就相当于只有1个人,算出来却满足了100人!
所以要进行拆点,将人拆成A1与A2,两者之间连一条容量为1的边,就可以了
拆点可以化点为边,进行流量限制
二,辅助点模拟决策集合
例题:p1361 https://www.luogu.org/problemnew/show/P1361
1,流量确定+最大流最小割定理
网络中