又是个模板题,,不打算敲了,讲下自己的想法。
刚开始的时候不知道怎么建图,原先想的是把任务和机器的mode[0,n+m)进行连接,(因为任务要全部完成)。但是发现这样不对啊,题目求的是最小的任务数。如果这样建图,根本求不出来。后来看到题解说是一边是A,一边是B,舍弃掉0后,建图。这样一想觉得开朗一些,这样即求最小点覆盖(全部边覆盖)。然后就开始想着为什么最大匹配等于最小点覆盖。
证明需要两点:
1、当最大匹配时,可以达到覆盖所有的边。此时m个节点是最大匹配的节点,对于左右两边的被匹配的节点,都把和他们相连的边标记,则达到覆盖所有的边。如果不能覆盖所有的边,即存在一条边,两边的端点都没被选中,那么与m个节点为最大匹配相矛盾,此假设不成立。
2、当最大匹配时,m个节点是全部覆盖的最小点数。若存在n(n<m)个节点是最小点,此时有m-n条边未选中,他们都不能与其响应匹配的边相连,所以一定不能达到完全匹配。
其实是不是还要证最小点覆盖等于最大匹配。。。。
再说吧。。。。。
然后就是套模板的事了。。。