二分图匹配(KM算法)n^4 分类: ACM TYPE 2014-10-04 11:36 88人阅读 评论(0) 收藏
2014-10-04 11:36
330 查看
#include <iostream> #include<cstring> #include<cstdio> #include<cmath> #include<climits> using namespace std; int g[505][505]; int dx[505],dy[505]; bool vx[505], vy[505]; int dis[505]; int n, x, y; int res, minn; bool find(int u) { vx[u] = true; for(int i=1;i<=n;i++) { if(!vy[i] && g[u][i]==dx[u]+dy[i]) { vy[i] = true; if(dis[i]==-1 || find(dis[i])) { dis[i] = u; return true; } } } return false; } int solve() { memset(dx,0,sizeof(dx)); memset(dy,0,sizeof(dy)); for(int i=1;i<=n;i++) { for(int j=1;j<=n;j++) { dx[i] = max(dx[i], g[i][j]); } } for(int i=1;i<=n;i++) { while(1) { minn = INT_MAX; memset(vx,false,sizeof(vx)); memset(vy,false,sizeof(vy)); if(find(i)) break; else { for(int j=1;j<=n;j++) { if(vx[j]) { for(int k=1;k<=n;k++) { if(!vy[k] && dx[j] + dy[k] - g[j][k]<minn) { minn = dx[j] + dy[k] - g[j][k]; } } } } for(int j=1;j<=n;j++) { if(vx[j]) dx[j]-=minn; if(vy[j]) dy[j]+=minn; } } } } return 0; } int main() { while(scanf("%d",&n)!=EOF) { memset(g,0,sizeof(g)); memset(dis,-1,sizeof(dis)); for(int i=1;i<=n;i++) { for(int j=1;j<=n;j++) { scanf("%d",&g[i][j]); } } res = 0; solve(); for(int i=1;i<=n;i++) { if(dis[i]>0) res+=(dx[dis[i]]+dy[i]); } printf("%d\n",res); } return 0; }我也是醉了,找了一天的BUG
相关文章推荐
- 二分图匹配(KM算法)n^3 分类: ACM TYPE 2014-10-01 21:46 98人阅读 评论(0) 收藏
- 二分图匹配 分类: ACM TYPE 2014-10-01 19:57 94人阅读 评论(0) 收藏
- short-path problem (Dijkstra) 分类: ACM TYPE 2014-09-01 23:51 111人阅读 评论(0) 收藏
- Windows平台下解决Oracle12c使用PDB数据库创建SDE的问题 分类: oracle sde 2015-06-12 11:03 88人阅读 评论(0) 收藏
- short-path problem (Floyd) 分类: ACM TYPE 2014-09-01 23:58 100人阅读 评论(0) 收藏
- 图标名称大写导致R cannot&nb… 分类: Android开发 2014-05-30 10:57 88人阅读 评论(0) 收藏
- short-path problem (Spfa) 分类: ACM TYPE 2014-09-02 00:30 103人阅读 评论(0) 收藏
- hash值的计算与转换 分类: ACM TYPE 2015-05-07 17:49 36人阅读 评论(0) 收藏
- Segment Tree with Lazy 分类: ACM TYPE 2014-08-29 11:28 134人阅读 评论(0) 收藏
- Segment Tree 分类: ACM TYPE 2014-08-29 13:04 97人阅读 评论(0) 收藏
- max_flow(Ford-Fulkerson) 分类: ACM TYPE 2014-09-02 01:50 110人阅读 评论(0) 收藏
- Segment Tree 扫描线 分类: ACM TYPE 2014-08-29 13:08 89人阅读 评论(0) 收藏
- 完全同态加密 分类: 密码学 2014-10-04 14:01 869人阅读 评论(0) 收藏
- Binary Indexed Tree 分类: ACM TYPE 2014-08-29 13:08 99人阅读 评论(0) 收藏
- Least Common Ancestors 分类: ACM TYPE 2014-10-19 11:24 84人阅读 评论(0) 收藏
- android中的数据库操作ZZ 分类: Android数据存储 2014-05-30 10:58 88人阅读 评论(0) 收藏
- Binary Indexed Tree 2D 分类: ACM TYPE 2014-09-01 08:40 95人阅读 评论(0) 收藏
- 快速幂取模 分类: ACM TYPE 2014-08-29 22:01 95人阅读 评论(0) 收藏
- max_flow(Edmond_Karp) 分类: ACM TYPE 2014-09-02 10:47 92人阅读 评论(0) 收藏
- C++疑难求解 分类: C/C++ 2015-04-17 11:36 38人阅读 评论(0) 收藏