二分图
又称作二部图,是图论中的一种特殊模型。
设G=(V,E)是一个无向图,
如果顶点V可分割为两个互不相交的子集(A,B),并且图中的每条边(i,j)所关联的两个顶点i和j分别属于这两个不同的顶点集(i in A,j in B),
则称图G为一个二分图。
最大匹配
给定一个二分图G,在G的一个子图M中,M的边集中的任意两条边都不依附于同一个顶点,则称M是一个匹配.
选择这样的边数最大的子集称为图的最大匹配问题(maximal matching problem)
注意几个问题:
1.match数组存的是每一个女生对应的男友是谁
2.每次更新的时候,判断一下和这个男生想要配对的女友配对的男友能不能换一个女生(一直递归),如果最后一个男生可以更换成一个没有被配对的女生,就找到了一条增广路
3.如果当前想要配对的女生没有被配对的话,就跟这个男生配对
4.最大匹配是在二分图上加了一个限制(任意两条边不依附于同一个顶点)
5.当然了,匈牙利算法并没有网络流算法来的快
#include<iostream>
#include<cstdio>
#include<cstring>
using n