随笔分类 - 最大流&二分匹配
摘要:简单二分匹配。代码如下:#include <cstring>#include <cstdlib>#include <cstdio>#define MAXN 205using namespace std;int N, M, G[MAXN][MAXN];int visit[MAXN], marry[MAXN];int path(int u){ for (int i = 1; i <= M; ++i) { if (!G[u][i] || visit[i]) { continue; } visit[i] = 1; if...
阅读全文
摘要:由于没有输出交换多少次,贡献了无数次 system error。求解该题相当与给每一行找到一个1对应出现的位置,在排序就可以了。代码如下:#include <cstdlib>#include <cstring>#include <cstdio>#include <cstring>#define MAXN 105using namespace std;int N, G[MAXN][MAXN], marry[MAXN], visit[MAXN];int r1[MAXN], r2[MAXN], count;int path(int u){ for (i
阅读全文
摘要:这题就是给定若干关系,求一个集合,该机和内部的各点之间没有任何关系,求得这个集合的元素最多为多少。代码如下:#include <cstdlib>#include <cstring>#include <cstdio>#define MAXN 500using namespace std;int N, visit[MAXN], marry[MAXN], G[MAXN][MAXN];int path(int u){ for (int i = 0; i < N; ++i) { if (!G[u][i] || visit[i]) { continue; ...
阅读全文
摘要:对于一个有向无环图,其最小简单路径覆盖就是等于节点数减去二分图的最大匹配数,对于每条弧,弧头作为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
阅读全文
摘要:该题是经典的二分图匹配的应用,题义是这样的。给定K个工作,有两台机器,A机器有N种工作状态,B机器有M种工作状态,对于每一个工作,既可以被A完成又可以被B完成,求完成所有工作至少需要转换多少次模式。将A以及B的不同模式作为二分图的两个部分,工作作为边,则该题转化为求解最小顶点覆盖来求解。最小顶点覆盖:包含二分图的X,Y部的部分顶点的一个集合,使得所有的边至少有一个顶点在该点集内。最小顶点覆盖就等于二分图的最大匹配。证明如下:设二分图的最大匹配数为M(下图中M等于2),现假设下面的二分图只有 (A,a)以及(C,c)两条边,我们通过增加边来还原至原本的图。这个增加边的过程是不能够使得二分图的匹配
阅读全文
摘要:简单二分匹配代码如下:#include <stdio.h>#include <string.h>#define MAXN 100int G[MAXN][305], N;int marry[305], visit[305];int path(int u){ for (int i = 1; i <= N; ++i) { if (!G[u][i] || visit[i]) continue; visit[i] = 1; if (!marry[i] || path(marry[i])) { marry[i] =...
阅读全文
摘要:二部图(也叫二分图)概念:1.何为二部图 如果V(G)可以分到两个集合X,Y中,且X和Y内部没有G的边.那么图G就是一个二部图(等价于图G是可二顶点着色的)下图便是一个二部图. 2.二部图的性质 一个图是二部图当且仅当图G中没有奇环.比如说一个三角形就不可能分成两个部分,并且每个部分内部没有边,但一个正方形就可以.3.如何得到二部图的每个部分 任意选一个顶点,所有到该点距离为偶数的点构成的集合便是G中的一部分,距离为奇数的点为另一部分4.何为匹配 图G的一个匹配是一组没有公共端点的边构成的集合,如(图一)两条黑色的边构成一个大小为2的匹配,三条红色的边构成一个大小为3的匹配.图中的最...
阅读全文
摘要:Flow ProblemTime Limit: 5000/5000 MS (Java/Others)Memory Limit: 65535/32768 K (Java/Others)Total Submission(s): 1252Accepted Submission(s): 606Problem DescriptionNetwork flow is a well-known difficult problem for ACMers. Given a graph, your task is to find out the maximum flow for the weighted direc
阅读全文


浙公网安备 33010602011771号