二分图匹配(匈牙利算法的DFS实现)
初始化:g[][]两边顶点的划分情况
建立g[i][j]表示i->j的有向边就可以了,是左边向右边的匹配
g没有边相连则初始化为0
uN是匹配左边的顶点数,vN是匹配右边的顶点数
调用:res=hungary();输出最大匹配数
优点:适用于稠密图,DFS找增广路,实现简洁易于理解
时间复杂度:O(VE)
*******************...
分类:
其他好文 时间:
2015-06-16 23:04:48
阅读次数:
275
模板://hdu 2063Hopcroft-Carp 时间复杂度为 O(sqrt(V)*E);
而匈牙利算法为 O(V*E);#include
#include
#include
#include
#include
#include
#include
#inc...
分类:
编程语言 时间:
2015-06-15 22:15:00
阅读次数:
168
题目链接:http://poj.org/problem?id=3041题意:n*n矩阵上有行星,每次只能在一行或一列放一发子弹,消灭本行或列的所有行星,求消灭所有行星的最小消耗子弹数目。解法:二分图,行为一个顶点集,列为另一顶点集。题目转化成为选择最少的一些点(x或y),使得从这些点与所有的边相邻,其实这就是最小点覆盖问题。代码:#include
#include ...
分类:
编程语言 时间:
2015-06-15 16:34:21
阅读次数:
145
#include
bool find(int x){
int i,j;
for(j=1;j
if(line[x][j]==true && uesd[j]==false)
///如果有暧昧并且还没有标记过(这里标记的意思是这次查找试图改变过该妹子的归属问题,但是没有成功,所以就不用瞎折腾功夫了)
{
...
分类:
编程语言 时间:
2015-06-14 21:30:13
阅读次数:
178
题目链接:http://acm.acmcoder.com/showproblem.php?pid=1054
题意:求无向图的最小顶点覆盖 = 最大匹配数 / 2;
代码:#include
#include
#include
#include
#include
#include
#in...
分类:
编程语言 时间:
2015-06-14 18:41:50
阅读次数:
155
匈牙利算法用于二分图的最大匹配,核心问题就是找增广路径。匈牙利算法的时间复杂度为O(VE),其中V为二分图左边的顶点数,E为二分图中边的数目。增广路性质:(1)有奇数条边。
(2)起点在二分图的左半边,终点在右半边。
(3)路径上的点一定是一个在左半边,一个在右半边,交替出现。
(4)整条路径上没有重复的点。
(5)起点和终点都是目前还没有配对的点,而其它所有点都是已经配好对的。
(6)路...
分类:
编程语言 时间:
2015-06-14 15:10:12
阅读次数:
163
先附上一片生动的匈牙利算法讲解~http://blog.csdn.net/dark_scope/article/details/8880547再配上一道题~http://soj.sysu.edu.cn/show_problem.php?pid=1000&cid=1854最后配上代码~ 1 #incl...
分类:
编程语言 时间:
2015-06-10 00:57:50
阅读次数:
199
http://poj.org/problem?id=3041在n*n的网格中有K颗小行星,小行星i的位置是(Ri,Ci),现在有一个强有力的武器能够用一发光速将一整行或一整列的小行星轰为灰烬,想要利用这个武器摧毁所有的小行星最少需要几发光束.主要是构图,将每一行当成一个点,构成集合1,每一列也当成一...
分类:
编程语言 时间:
2015-06-09 21:28:40
阅读次数:
142
POJ 1422 Air Raid (最小点集覆盖 匈牙利算法)...
分类:
编程语言 时间:
2015-06-09 13:51:15
阅读次数:
127
POJ 1469 COURSES (二分图最大匹配 匈牙利算法)...
分类:
编程语言 时间:
2015-06-09 06:15:57
阅读次数:
106