摘要: 题目链接:http://poj.org/problem?id=2226这道题跟上一道很相似不同之处在于这里不是整行或者整列的删,而是连续的几个可以一起删,不连的不能删,这就要对原图进行处理,对原有的图行由上到下,列由左到右进行编号,作为x集合,在同一行且连续的编号一样,然后对原有的图列由左到右,行由上到下重新编号,作为y集合。之后就是二分图求最大匹配。View Code 1 #include <iostream> 2 #include <cstring> 3 #include <cstdio> 4 using namespace std; 5 const i 阅读全文
posted @ 2012-05-07 20:54 我们一直在努力 阅读(173) 评论(0) 推荐(0) 编辑
摘要: 题目链接:http://poj.org/problem?id=2594建图很重要!!!大致题意: 给出一个由n个顶点m条边组成的有向无环图。求最少可以同时存在多少路径,使得这些路径可以覆盖所有的点(注:每个点可以被多条路径覆盖)。大致思路: 最小路径覆盖的一点小小变形,由于这里的点可以被重复覆盖,所以除了按照普通求最小路径覆盖的方式建立二分图以外,还要对原图用floyd求一遍传递闭包,并更新二分图。接下来用点数n减去最大匹配得到的就是答案【最小路径覆盖(原图不一定是二分图,但必须是有向图,拆点构造二分图)】:在图中找一些路径,使之覆盖了图中的所有顶点,且任何一个顶点有且只有一条路径与之关联.. 阅读全文
posted @ 2012-05-07 16:14 我们一直在努力 阅读(258) 评论(0) 推荐(0) 编辑
摘要: 题目链接:http://acm.hdu.edu.cn/showproblem.php?pid=2119题意很好理解,就是每次可以删除一行或者一列数,问最少几次可以把所有的1都变成0,也就是都删完。利用二分图解行表示二分图的一部分,列表示一部分,为1的点表示连一条边,然后求最小顶点覆盖数。最小顶点覆盖即表示用最少的顶点把所有的边都关联到。最小顶点覆盖 = 最大匹配。此外二分图还有最小路径覆盖,意思是用最少的边把图中所有的顶点都遍历到。最小路径覆盖 = 顶点数 - 最大匹配。View Code 1 #include <iostream> 2 #include <cstring&g 阅读全文
posted @ 2012-05-07 15:08 我们一直在努力 阅读(258) 评论(0) 推荐(0) 编辑