二分图
文章平均质量分 79
fyfcauc
这个作者很懒,什么都没留下…
展开
-
poj-3041
//1380K 47MS G++ #include #include #define MAX 510 int N; int K; int Vset1[MAX]; // row int Vset2[MAX]; // column int G[MAX][MAX]; // 0: no asteriod, 1: asteriod int assignedFlag[MAX]; int waitin原创 2014-07-13 18:28:08 · 387 阅读 · 0 评论 -
二分图大讲堂——彻底搞定最大匹配数(最小覆盖数)、最大独立数、最小路径覆盖、带权最优匹配
二分图大讲堂——彻底搞定最大匹配数(最小覆盖数)、最大独立数、最小路径覆盖、带权最优匹配 From: http://dsqiu.iteye.com/blog/1689505 文本内容框架: §1图论点、边集和二分图的相关概念和性质 §2二分图最大匹配求解 匈牙利算法、Hopcroft-Karp算法 §3二分图最小覆盖集和最大独立集的构造 §4二分图最小路径覆盖求解 §5二分图带转载 2014-07-15 09:42:56 · 649 阅读 · 0 评论 -
poj-1469
//756K 469MS G++ #include #include #define MAX 310 int G[MAX][MAX]; int V1[MAX]; int V2[MAX]; int P; // course num int N; // student num int waittingMove[MAX]; char getPair(int curId) {原创 2014-07-15 15:39:40 · 413 阅读 · 0 评论 -
poj-1087
// 2604K 32MS G++ #include #include #include #include #include using namespace std; #define MAX 230 map deviceList; int receptacleNum; int deviceNum; int adapterNum; struct flowNode { int原创 2014-07-19 15:42:51 · 631 阅读 · 0 评论 -
poj-2195
#include #include #include using namespace std; #define MAX 110 int map[MAX][MAX]; // 0: space, even: human odd: house int N; // number of rows, height int M; // number of columns. width struc原创 2014-07-18 17:34:24 · 580 阅读 · 0 评论 -
poj-2594
// 2712K 266MS G++ #include #include #include using namespace std; #define MAX 520 int G[MAX][MAX]; int G_F[MAX][MAX]; int iNum; int sNum; int V1[MAX]; int V2[MAX]; char waitingMove[MAX];原创 2014-07-16 17:14:04 · 483 阅读 · 0 评论 -
二分图带权匹配 KM算法与费用流模型建立
From: https://www.byvoid.com/blog/match-km/ [二分图带权匹配与最佳匹配] 什么是二分图的带权匹配?二分图的带权匹配就是求出一个匹配集合,使得集合中边的权值之和最大或最小。而二分图的最佳匹配则一定为完备匹配,在此基础上,才要求匹配的边权值之和最大或最小。二分图的带权匹配与最佳匹配不等价,也不互相包含。 我们可以使用KM算法实现求二分图的最转载 2014-07-16 20:18:35 · 628 阅读 · 0 评论 -
KM算法
From: http://www.cnblogs.com/crazyac/articles/1932808.html 引用1: KM算法是通过给每个顶点一个标号(叫做顶标)来把求最大权匹配的问题转化为求完备匹配的问题的。设顶点Xi的顶标为A[i],顶点Yi的顶标为B [i],顶点Xi与Yj之间的边权为w[i,j]。在算法执行过程中的任一时刻,对于任一条边(i,j),A[i]+B[j]>=w转载 2014-07-17 17:11:10 · 540 阅读 · 0 评论 -
小白学习KM算法详细总结--附上模板题hdu2255
From: http://blog.csdn.net/zyy173533832/article/details/11519291 KM算法是基于匈牙利算法求最大或最小权值的完备匹配 关于KM不知道看了多久,每次都不能完全理解,今天花了很久的时间做个总结,归纳以及结合别人的总结给出自己的理解,希望自己以后来看能一目了然,也希望对刚学习KM算法的人有帮助,这里结合一个模板题,以及 图形解说,更转载 2014-07-17 16:49:23 · 725 阅读 · 0 评论 -
二分图匹配
From: http://blog.csdn.net/q3498233/article/details/5786225 二分图:二分图是这样一个图,它的顶点可以分类两个集合X和Y,所有的边关联的两个顶点恰好一个属于集合X,另一个属于集合Y。 二分图匹配:给定一个二分图G,在G的一个子图M中,M的边集中的任意两条边都不依附于同一个顶点,则称M是一个匹配。 最大匹配:图中包含边数最多的匹配称转载 2014-07-17 15:49:44 · 479 阅读 · 0 评论 -
图的匹配问题与最大流问题(二)——最大流问题Ford-Fulkerson方法
From: http://blog.csdn.net/smartxxyx/article/details/9293665 本篇承接上一篇文章,主要讲解最大流问题的Ford-Fulkerson解法。可是说这是一种方法,而不是算法,因为它包含具有不同运行时间的几种实现。该方法依赖于三种重要思想:残留网络,增广路径和割。本文将会详细介绍这些内容,下一篇文章我们提供一种该方法的Java实现。 在介转载 2014-07-17 14:54:36 · 743 阅读 · 0 评论 -
图的匹配问题与最大流问题(五)——计算二分图的最大匹配
From: http://blog.csdn.net/smartxxyx/article/details/9672181 二分图的最大匹配问题第一篇已经说过,下面看看百度百科给的一些解释: 给定一个二分图G,M为G边集的一个子集,如果M满足当中的任意两条边都不依附于同一个顶点,则称M是一个匹配。 极大匹配(Maximal Matching)是指在当前已完成的匹配下,无法再通过转载 2014-07-17 14:50:44 · 1391 阅读 · 0 评论 -
图算法之:匈牙利算法(最大二分匹配)
匈牙利算法是解决寻找二分图最大匹配的。 (一)预备知识 什么是二分图:二分图又称作二部图,是图论中的一种特殊模型。 设G=(V,E)是一个无向图,如果顶点V可分割为两个互不相交的子集(A,B),并且图中的每条边(i,j)所关联的两个顶点i和j分别属于这两个不同的顶点集(i in A,j in B),则称图G为一个二分图。 什么是匹配:把上图想象成3男4女搞对象(无同性转载 2014-07-17 17:02:25 · 419 阅读 · 0 评论 -
poj-1422
//440K 0MS G++ #include #include #define MAX 125 int G[MAX][MAX]; int iNum; int sNum; int V1[MAX]; int V2[MAX]; char waitingMove[MAX]; char getPair(int checkId) { for (int i = 1; i <= iNum原创 2014-07-16 11:51:26 · 501 阅读 · 0 评论 -
最小边覆盖与最小路径覆盖的联系与区别
From: http://blog.csdn.net/wall_f/article/details/8187144 鉴于我一直没有分清楚最小边覆盖与最小路径覆盖的关系,于是我就写写总结。 边覆盖集:通俗地讲,所谓边覆盖集,就是G中所有的顶点都是E*中某条边的邻接顶点(边覆盖顶点),一条边只能覆盖2个顶点。 注意:在无向图中存在用尽量少的边去“覆盖”住所有的顶点,所以边覆盖集有极小与最小的转载 2014-07-16 12:04:49 · 613 阅读 · 0 评论 -
poj-2446
#include #include #define MAX 35 #define GRID_MAX MAX*MAX int G[MAX][MAX]; char G_relation[GRID_MAX][GRID_MAX]; int M; // length int N; // height int K; int validGridNum; int V1[GRID原创 2014-07-15 17:56:37 · 537 阅读 · 0 评论 -
poj-1325
// 428K 0MS G++ #include #include #define MAX 110 #define JOB_MAX 1020 int G[MAX][MAX]; int n; int m; int k; int V1[MAX]; int V2[MAX]; int waitingMove[MAX]; char getPair(int beginId) {原创 2014-07-15 14:47:46 · 378 阅读 · 0 评论