KM 匈牙利
文章平均质量分 69
markpen
这个作者很懒,什么都没留下…
展开
-
KM算法
先说KM算法求二分图的最佳匹配思想,再详讲KM的实现。 【KM算法求二分图的最佳匹配思想】 对于具有二部划分( V1, V2 )的加权完全二分图,其中 V1= { x1, x2, x3, ... , xn }, V2= {y1, y2, y3, ... , yn },边具有权值 Wi,j。该带权二分图中一个总权值最大的完美匹配,称之为最佳匹配。 记 L(x) 表示结点 x的转载 2014-07-17 08:58:28 · 681 阅读 · 0 评论 -
poj 3041
定点覆盖#include #include #include #define Max 500 using namespace std; int n,k; int _map[1000][1000]; int link[1000],vis[1000]; int dfs(int t) { for(int i=0;i<n;i++) { if(!vis[i]&&_ma原创 2014-07-16 10:36:28 · 381 阅读 · 0 评论 -
poj 2446
二分图练习#include #include #include using namespace std; const int MAX=33; bool map[MAX][MAX]; int match[MAX*MAX+MAX+1]; int visit[MAX*MAX+MAX+1]; int Left[MAX*MAX]; int n,m,k; int x,y; int chx[]={-1,0原创 2014-07-16 09:58:37 · 408 阅读 · 0 评论 -
poj 3686
KM练习 #include #include #include #define MAX 3000 using namespace std; int n,m; int _map[1000][1000],fmap[3000][3000]; int visx[MAX],visy[MAX],lx[MAX],ly[MAX],link[MAX],d,slack[100020]; void build(原创 2014-07-17 13:18:27 · 470 阅读 · 0 评论 -
poj 2060
最小顶点覆盖练习#include #include #include using namespace std; int _map[505][505]; int t,num; int mark[1000],link[1000]; struct book { int st,et,a,b,c,d; }bo[1000]; int _abs(int a,int b) { return原创 2014-07-15 21:55:56 · 391 阅读 · 0 评论 -
poj 3565
KM练习 这个过le #include #include #include #include using namespace std; int n; double fmap[1000][1000]; int visx[1000],visy[1000],link[1000]; double lx[1000],ly[1000],slack[1000],d; struct tree {原创 2014-07-17 16:45:36 · 397 阅读 · 0 评论 -
poj 1422
最小定点覆盖练习原创 2014-07-15 21:52:01 · 412 阅读 · 0 评论 -
poj 2195
KM 练习#include #include #include #define INF 9999999 using namespace std; int n,m,mnum,hnum; int _map[1000][1000],link[1000],vis[1000]; int visx[1000],visy[1000],lx[1000],ly[1000]; int slack[1000];原创 2014-07-17 10:03:15 · 320 阅读 · 0 评论 -
poj 1274
二分匹配练习 #include #include #include using namespace std; int _map[1000][1000]; int vis[1000],link[1000]; int n,m; int dfs(int k) { for(int i=0;i<m;i++) { if(!vis[i]&&_map[k][i])原创 2014-07-16 00:34:17 · 404 阅读 · 0 评论