二分图判定
染色法
二分图匹配
匈牙利算法
增广路(augmenting path)是始于非匹配点且终于非匹配点(除了起始的点)的交错路。增广路中边的数量是奇数。
增广路中,原匹配边变为非匹配边,可得到更大匹配
枚举每个左部点, 遍历所有边:
1、若有未匹配的右部点, 则将此两点匹配。
2、否则递归处理该右部点对应的左部点,处理同上, 直至找到未匹配的右部点,或是以失败告终
3、如果找到一条增广路,进行翻转
最大流算法
二分图的最小点覆盖 = 最大匹配
构造:从左侧未匹配的节点出发,按照匈牙利算法中增广路的方式走,即先走一条匹配边,再走一条匹配边
二分图 = 点数 - 最小点覆盖
最小点覆盖中,任意一条边都被至少选了一个顶点,所以对于其点集的补集,任意一条边都至多被选了一个点
二分图最小边覆盖 = 点数 - 最大匹配
luogu p3386
luogu p1604