hdu 2255KM算法模板

原创 2013年12月03日 00:04:58
#include<stdio.h>
#include<string.h>
#define N  400
#define inf 0x7fffffff
int Max(int a,int b ) {
return a>b?a:b;
}
int Min(int a,int b) {
return a>b?b:a;
}
int map[N][N],lx[N],ly[N],s[N],t[N],link[N],n;
int find(int u) {
int i;
s[u]=1;
for(i=1;i<=n;i++)  
if(!t[i]&&lx[u]+ly[i]==map[u][i]) {
t[i]=1;
if(!link[i]||find(link[i])) {
link[i]=u;
return 1;
}
}
return 0;
}
int KM() {
int i,j,sum=0,d,k;
memset(lx,0,sizeof(lx));
memset(ly,0,sizeof(ly));
memset(link,0,sizeof(link));
for(i=1;i<=n;i++)
for(j=1;j<=n;j++)
lx[i]=Max(lx[i],map[i][j]);
for(i=1;i<=n;i++) {
d=inf;
while(1) {
memset(s,0,sizeof(s));
memset(t,0,sizeof(t));
if(find(i))break;
for(j=1;j<=n;j++)
if(s[j]) {
for(k=1;k<=n;k++)
if(!t[k])
d=Min(d,lx[j]+ly[k]-map[j][k]);
}
for(j=1;j<=n;j++) {
if(s[j])lx[j]-=d;
if(t[j])ly[j]+=d;
}
}

}
for(i=1;i<=n;i++)
sum+=map[link[i]][i];
return sum;
}
int main() { 
int i,j;
while(scanf("%d",&n)!=EOF) {
for(i=1;i<=n;i++)
for(j=1;j<=n;j++)
scanf("%d",&map[i][j]);
printf("%d\n",KM());
}
return 0;
}
版权声明:本文为博主原创文章,未经博主允许不得转载。

hdu 2255 二分图最大权匹配 KM算法kuangbin模板

题目: 奔小康赚大钱 Time Limit: 1000/1000 MS (Java/Others)    Memory Limit: 32768/32768 K (Java/Others)...

小白学习KM算法详细总结--附上模板题hdu2255

x小白理解KM算法学习总结,归纳各位大神的总结,结合自己辛苦画的图,详细的模板解说,希望自己以后回头看能一目了然,也对刚接触Km的人有帮助.....

模板_HDU2255奔小康赚大钱_最大权最大匹配问题_KM算法

题目链接:奔小康赚大钱 KM算法类似于匈牙利算法,只是多了些东西(最大权值的交换,记录) KM算法详解链接 不过这道题就已经是KM算法的入门题了 相比之下多了两个数组x_price[],y_pric...

KM算法模板 hdu2255

/* 二分图最优匹配算法,邻接矩阵形式 复杂度o(m^3) HDU 2255 当前默认权值最大匹配 */ #include #include #include #include #include ...
  • tanmlh
  • tanmlh
  • 2014年10月11日 21:24
  • 273

HDU 2255 奔小康赚大钱 (KM算法 模板)

A - 奔小康赚大钱 Time Limit:1000MS     Memory Limit:32768KB     64bit IO Format:%I64d & %I64u Submit Sta...

hdu 2255奔小康赚大钱 KM算法模板

题目链接:http://acm.hdu.edu.cn/showproblem.php?pid=2255 一,KM算法:(借助这个题写一下个人对km的理解与km模板) KM算法主要是用来求解图的最优匹配...

hdu-2255(KM算法模板)

奔小康赚大钱 Problem Description 传说在遥远的地方有一个非常富裕的村落,有一天,村长决定进行制度改革:重新分配房子。 这可是一件大事,关系到人民的住房问题啊。村里共有n间房间...

hdu 2255 奔小康赚大钱--KM算法模板

题目链接:http://acm.hdu.edu.cn/showproblem.php?pid=2255 题意:有N个人跟N个房子,每个人跟房子都有一定的距离,现在要让这N个人全部回到N个房子里面去,...

HDU 2255(KM 模板题)

奔小康赚大钱 Time Limit: 1000/1000 MS (Java/Others)    Memory Limit: 32768/32768 K (Java/Others) Tot...

hdu2255+poj3565(km模板题)

hdu2255 奔小康赚大钱
内容举报
返回顶部
收藏助手
不良信息举报
您举报文章:hdu 2255KM算法模板
举报原因:
原因补充:

(最多只允许输入30个字)