【网络流】最大流:算法模板,二分图匹配

本文详细介绍了最大流算法,包括Ek算法和Dinic算法,以及它们的时间复杂度。同时,通过飞行员配对方案和圆桌问题,探讨了如何使用最大流解决二分图匹配问题,阐述了二者之间的关系和转化方法,并提供了相关问题的代码实现。
摘要由CSDN通过智能技术生成

算法模板

Ek算法 时间复杂度: O ( n m 2 ) O(nm^2) O(nm2)

给一个流网络,维护残留网络。

while(){
	①在当前的残留网络里找增广路(bfs):f'
	②更新残留网络:把当前的残留网络 Gf 更新为新流的残留网络 G(f+f')
} 

①简单的遍历,用 b f s bfs bfs即可。

②假设当前残留网络里正向边的容量为 c 1 c_1 c1,反向边的容量为 c 2 c_2 c2,且增广路径流了 k k k的流量,正向边的容量变为 c 1 − k c_1-k c1k,反向边的容量变为 c 2 + k c_2+k c2+k

更新:一旦找到一条从 s s s t t t的增广路径之后,首先考虑整个增广路径最多可以增加多少流,即最小边的流量。若最小边的流量为 k k k,那么整条增广路径的流量就为 k k k,再用前面所描述的方式将这条路径上所有的边的容量更新即可。

p r e [ ] pre[] pre[]记录前驱边,即可记录整条路径。

  • E k Ek Ek算法在求最大流时一般用不到,但 E K EK
  • 1
    点赞
  • 2
    收藏
    觉得还不错? 一键收藏
  • 0
    评论

“相关推荐”对你有帮助么?

  • 非常没帮助
  • 没帮助
  • 一般
  • 有帮助
  • 非常有帮助
提交
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值