文章目录
前言
一、匈牙利算法
二、AcWing 861. 二分图的最大匹配
本题分析
AC代码
三、时间复杂度
前言
复习acwing算法基础课的内容,本篇为讲解基础算法:匈牙利算法,关于时间复杂度:目前博主不太会计算,先鸽了,日后一定补上。
一、匈牙利算法
下图来自:ACWing算法基础课
匈牙利算法是用来寻找二分图最大匹配的算法具体实现方式下面做讲解:
我们把两个集合分为男,女两个集合,其中的每一条黑线都意味着这一对儿男女之间有感情,我们要做的,是看看能最多有多少对男女能够实现配对,下面我们一步一步看:
我们遍历每一个男生,那么一号男嘉宾和二号女嘉宾之间有一条线,证明他俩可成,我们标注一下
显然我们不能脚踏两条船,第一个男生已经心有所属,所以我们来看第二个男生,发现二号男嘉宾可以与一号女嘉宾实现配对,我们同样标记一下,代表他俩在一起了
接着,看到三号男嘉宾只喜欢二号女嘉宾,没有其他的选项了,那么我们把他们连一条线
尴尬的情况发生了,我们的二号女嘉宾居然脚踏两条船!!!,显然社会上不允许这样,那么二号女嘉宾就甩掉了一号男嘉宾
但是,一号男嘉宾也不是没有准备,一号男嘉宾还有一位“备胎”,四号女嘉宾,所以被甩了之后,就找上了四号女嘉宾
那么最后来看我们的四号男嘉宾,四号男嘉宾和三号女嘉宾之间有感情,同样上述操作
至此,所有的男女嘉宾都找到了自己的心上人,匈牙利算法结束