KM算法模板(HDU 2255)
2016-09-26 16:30
176 查看
#include <stdio.h> #include <string.h> #include <iostream> #include <cctype> #include <string> #include <cmath> #include <algorithm> #include <queue> #include <set> #include <vector> #include <map> #define PR pair<int,int> #define MP make_pair #define fi first #define se second #define lson l,m,rt<<1 #define rson m+1,r,rt<<1|1 #define sqr(x) ((x)*(x)) #define ll __int64 const int N=305; const int MOD=1000000007; const int INF=0x3f3f3f3f; const double eps=1e-9; const double pi=3.1415926536; using namespace std; int n; int lx ,ly ; int match ; int visx ,visy ; int slack ; int g ; bool dfs(int cur) { visx[cur]=1; for(int i=0;i<n;i++) { if(visy[i]) continue; int t=lx[cur]+ly[i]-g[cur][i]; if(t==0) { visy[i]=1; if(match[i]==-1||dfs(match[i])) { match[i]=cur; return true; } } else slack[i]=min(slack[i],t); } return false; } int KM() { memset(match,-1,sizeof(match)); memset(ly,0,sizeof(ly)); for(int i=0;i<n;i++) { lx[i]=g[i][0]; for(int j=0;j<n;j++) lx[i]=max(lx[i],g[i][j]); } for(int i=0;i<n;i++) { fill(slack,slack+n,INF); while(1) { memset(visx,0,sizeof(visx)); memset(visy,0,sizeof(visy)); if(dfs(i)) break; int d=INF; for(int j=0;j<n;j++) if(!visy[j]) d=min(d,slack[j]); for(int j=0;j<n;j++) if(visx[j]) lx[j]-=d; for(int j=0;j<n;j++) { if(visy[j]) ly[j]+=d; else slack[j]-=d; } } } int res=0; for(int i=0;i<n;i++) { if(match[i]>-1) res+=g[match[i]][i]; } return res; } int main() { while(~scanf("%d",&n)) { for(int i=0;i<n;i++) { for(int j=0;j<n;j++) { scanf("%d",&g[i][j]); } } printf("%d\n",KM()); } }
相关文章推荐
- hdu 2255奔小康赚大钱 KM算法模板
- hdu 2255奔小康赚大钱 KM算法模板
- hdu 2255(KM算法模板)
- HDU 2255 奔小康赚大钱 (KM算法 模板)
- km算法模板 hdu2255
- hdu 2255 奔小康赚大钱--KM算法模板
- HDU 2255 奔小康,赚钱(KM算法模板)
- HDU 2255 奔小康赚大钱(KM算法模板题)
- hdoj 2255 奔小康赚大钱 (KM算法 详解+模板) && HDU 1533 Going Home (二分图最小权匹配 KM模板)纯模板
- hdu 2255 奔小康赚大钱 (km算法模板)
- KM算法O(n^3)模板 hdu2255
- HDU 2255 奔小康赚大钱 (KM算法 模板题)
- 小白学习KM算法详细总结--附上模板题hdu2255
- hdu-2255(KM算法模板)
- hdu 2255 奔小康赚大钱--KM算法模板
- 【KM算法 模板】HDU - 2255 奔小康赚大钱
- HDU 2255 KM算法—模板
- [置顶] 小白学习KM算法详细总结--附上模板题hdu2255
- KM算法模板(HDU_2255)
- hdu 2255 二分图最大权匹配 km算法模板