【luogu P6577】【模板】二分图最大权完美匹配(KM算法)

本文详细介绍了如何使用KM算法解决二分图的最大权完美匹配问题,结合luogu P6577题目进行讲解,讨论了算法的思路、初始定标方法以及如何优化从O(n^4)到O(n^3)的过程,通过二分图匹配与定标值的调整寻找最大权重的匹配方案。
摘要由CSDN通过智能技术生成

【模板】二分图最大权完美匹配

题目链接:luogu P6577

题目大意

一个二分图,有一些带权边,保证有完美匹配。
求一种最大匹配的方案使得匹配边的边权和最大。

思路

KM 算法的模板题。

它有一定的针对性:一定要是带权的完美匹配。
然后我们定义每个点有一个顶表(一个值) e x e_x ex

对于每一条边 ( u , v ) (u,v) (u,v),我们要满足 e u + e v ⩾ w ( u , v ) e_u+e_v\geqslant w(u,v) eu+evw(u,v)
然后如果 e u + e v = w ( u , v ) e_u+e_v=w(u,v) eu+ev=w(u,v),那我们就可以把这条边放进二分图中。
那如果这个时候的图能跑出完美匹配,那此时的边权和即是结果。

但是你发现定标的值不能直接确定,所以算法的流程是这样的:
确定定标的值,跑匹配判断(如果匹配是 n n n 就结束),否则就修改定标,然后重复操作。

然后接着问题就是一开始怎么给定标的值,而且每次怎么修改。
一开始给定标,我们可以让 e x x = 0 , e y x = max ⁡ i = 1 n w ( x , i ) ex_x=0,ey_x=\max\limits_{i=1}^nw(x,i) exx=0,eyx=i=1maxnw(x,i)
然后每次修改,我们就是要减少一些 e u + e v e_u+e_v eu+ev 的值使得更多边在图中。

那我们修改就是找一条边 ( i , j ) (i,j) (i,

  • 0
    点赞
  • 2
    收藏
    觉得还不错? 一键收藏
  • 0
    评论
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

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

抵扣说明:

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

余额充值