摘要: 对于一个有向无环图,其最小简单路径覆盖就是等于节点数减去二分图的最大匹配数,对于每条弧,弧头作为X部,弧尾作为Y部。最后在求得最大匹配的基础上,没有被匹配的Y部的点就是简单路径的起点。其个数刚好就是节点数减去二分图的最大匹配数。证明略。代码如下:#include <cstring>#include <cstdlib>#include <cstdio>#define MAXN 125using namespace std;int N, M, G[MAXN][MAXN], marry[MAXN], visit[MAXN];int path(int u){ for 阅读全文
posted @ 2012-03-28 21:55 沐阳 阅读(679) 评论(0) 推荐(0) 编辑
摘要: 该题是经典的二分图匹配的应用,题义是这样的。给定K个工作,有两台机器,A机器有N种工作状态,B机器有M种工作状态,对于每一个工作,既可以被A完成又可以被B完成,求完成所有工作至少需要转换多少次模式。将A以及B的不同模式作为二分图的两个部分,工作作为边,则该题转化为求解最小顶点覆盖来求解。最小顶点覆盖:包含二分图的X,Y部的部分顶点的一个集合,使得所有的边至少有一个顶点在该点集内。最小顶点覆盖就等于二分图的最大匹配。证明如下:设二分图的最大匹配数为M(下图中M等于2),现假设下面的二分图只有 (A,a)以及(C,c)两条边,我们通过增加边来还原至原本的图。这个增加边的过程是不能够使得二分图的匹配 阅读全文
posted @ 2012-03-28 21:08 沐阳 阅读(328) 评论(0) 推荐(0) 编辑