【模板】二分图最大权完美匹配
题目链接: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+ev⩾w(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,