摘要: 昨天晚上终于下定决心一定要学学二分图了。就去看了一会《离散数学》中的“匹配”那一章,了解了相异代表系、最大独立集,最小覆盖之类的概念。 先说一下题目大意:在一个N*N的矩阵中,有K个点,有一个操作每一次能消除掉一行或者一列上所有的点,问最少要多少次操作才能消除所有的点。 这题很简单可以看出来是一个二分图的模型。讲行和列视为二分图的两个集合,则一个点(x,y)可以看为在x->y之间连一条边,那么这个问题就是求最小覆盖。 最小覆盖:V是一个顶点的集合,若图G中每条边都与V中至少一个点相关联,且V是满足上述条件的顶点最小的集合。 所以直接套用匈牙利算法,代码如下: #include<i. 阅读全文
posted @ 2013-05-25 17:00 你的微笑给了我一半 阅读(295) 评论(0) 推荐(0) 编辑