题目来源
P2762 太空飞行计划问题
题目分析
中文题,题意就不用说了吧...
思路:经典二分图匹配问题,我们记M表示外籍飞行员的顶点集合,用N表示英国飞行员的顶点集合,E表示匹配关系,二分图G = (MN,E),则对于任意的 m M,nN, 外籍飞行员m和英国飞行员n匹配(m,n) E
而G中满足两两不含公共端点的变的集合KE的基数|K|的最大值 ,就是我们需要求的最大匹配数(题目求的是最大匹配数的两倍)
我们可以将二分图最大匹配问题看成是一种特殊的最大流问题,建图过程如下:
将原图中所有的无向边e改成有向边,方向为从M到N,容量为1。增加源点s和汇点t,从s向M中每个点连一条容量为1的边,从N中每个点向t连一条容量为1的边。
这样一来,我们构建的图G'中最大的s-t流的流量就是原来二分图G中的最大匹配的匹配数了。
下图为第一个样例的图,蓝线代表容量为1的边(未修改之前),红边组成增广路径。
求出了最大匹配,我们还需要知道哪些顶点是匹配的,借助上图,我们注意到如果最终在残余网络中有边 e (m,n) 的容量为0, m M,nN,那么 m,n为一个匹配,所以我们枚举M,N之间每一条边来得出答案。
代码区
#include
#include
#include
#include
#include
#include
#include
#include
#include
#include