HDU1150(二分图最小点覆盖证明)

题目链接:HDU1150

题目意思:

有A,B两种机器,A机器上有n种模具,B机器上有m种模具,有k个任务,每个任务可以在既可以在A机器上的x模具上生产,也可以在B机器上的y模具上生产。A,B机器都可以切换模具,开始的A,B都为0模具,问最少切换多少次模具。可以完成所有的任务。

题目思路:

如果我们把A机器的n个模具作为二分图的左部,B机器的m个模具作为二分图的右部,然后把每个任务当成一条连接左部x和右部y的边,问题就转化为选择最少的点,覆盖所有的边,边覆盖的定义为该边至少有一个端点在所选点集中。(用最少的模具完成所有任务)。
有这么一个结论:二分图最大匹配 = 二分图最小点覆盖

怎么理解这个结论呢 ?

下面的证明参考这篇博客:大佬的博客
看下面这个二分图,蓝色边是他的匹配边
HDU1150(二分图最小点覆盖证明)
我们可以这么构造一组最小点覆盖的点集。
从二分图的右部的每个未匹配点出发,找一条满足未匹配边-匹配边-未匹配边-匹配边……-未匹配边-匹配边的交叉路,并标记路径上的点。完成之后,左部上标记的点和右部上未标记的点共同组成了一个最小点覆盖点集。(如下图,黑色的点为标记点)HDU1150(二分图最小点覆盖证明)
简单证明一下为什么这样的点集恰好等于最大匹配数。
因为每一个点都和一条匹配边对应,为什么呢?