摘要: 最小路径覆盖数=顶点数n-最大匹配数;定义 一个PXP的有向图中,路径覆盖就是在图中找一些路径,使之覆盖了图中的所有顶点,且任何一个顶点有且只有一条路径与之关联;(如果把这些路径中的每条路径从它的起始点走到它的终点,那么恰好可以经过图中的每个顶点一次且仅一次);如果不考虑图中存在回路,那么每条路径就是一个弱连通子集. 由上面可以得出: 1.一个单独的顶点是一条路径; 2.如果存在一路径p1,p2,......pk,其中p1 为起点,pk为终点,那么在覆盖图中,顶点p1,p2,......pk不再与其它的顶点之间存在有向边. 最小路径覆盖就是找出最小的路径条数,使之成为P的一个路径覆盖. 路.. 阅读全文
posted @ 2012-07-04 16:51 wutaoKeen 阅读(131) 评论(0) 推荐(0) 编辑
摘要: 这是一道二分匹配题,根据Konig定理:最大匹配数=最小覆盖数;这里我们以行为左边,以列为右边建图,这样建好后,就是一个裸的二分匹配;View Code #include<iostream>#include<cstdio>#include<cstdlib>#include<algorithm>#include<cmath>#include<queue>#include<set>#include<map>#include<cstring>#include<vector>usin 阅读全文
posted @ 2012-07-04 14:47 wutaoKeen 阅读(138) 评论(0) 推荐(0) 编辑
摘要: 这是一道裸的二分匹配题:View Code #include<iostream>#include<cstdio>#include<cstdlib>#include<algorithm>#include<cmath>#include<queue>#include<set>#include<map>#include<cstring>#include<vector>using namespace std;int visit[524],partner[524],K,N,M,G[524 阅读全文
posted @ 2012-07-04 11:46 wutaoKeen 阅读(93) 评论(0) 推荐(0) 编辑
摘要: 这是一道拓扑排序题;View Code #include<iostream>#include<cstdio>#include<cstdlib>#include<algorithm>#include<cmath>#include<queue>#include<set>#include<map>#include<cstring>#include<vector>using namespace std;class AOV{public: int num; AOV *next;};cl 阅读全文
posted @ 2012-07-04 10:18 wutaoKeen 阅读(103) 评论(0) 推荐(0) 编辑