最大二分图匹配,O(n^3)。

 /* 2255 */
#include <iostream>
#include <algorithm>
#include <cstdio>
#include <cstring>
#include <cstdlib>
using namespace std; #define MAXN 305
#define INF 0x3f3f3f3f int w[MAXN][MAXN];
int link[MAXN];
int Lx[MAXN], Ly[MAXN];
int slack[MAXN];
bool S[MAXN], T[MAXN];
int n; bool dfs(int i) {
S[i] = true;
for (int j=; j<=n; ++j) {
if (T[j])
continue;
int tmp = Lx[i]+Ly[j]-w[i][j];
if (tmp == ) {
T[j] = true;
if (!link[j] || dfs(link[j])) {
link[j] = i;
return true;
}
} else {
slack[j] = min(slack[j], tmp);
}
}
return false;
} void update() {
int mn = INF;
for (int i=; i<=n; ++i) if (!T[i]) mn = min(mn, slack[i]);
for (int i=; i<=n; ++i) {
if (S[i]) Lx[i] -= mn;
if (T[i]) Ly[i] += mn;
}
} void KM() {
int i, j, k; memset(link, , sizeof(link));
memset(Lx, , sizeof(Lx));
memset(Ly, , sizeof(Ly));
for (i=; i<=n; ++i)
for (j=; j<=n; ++j)
Lx[i] = max(Lx[i], w[i][j]);
for (i=; i<=n; ++i) {
for (;;) {
memset(S, false, sizeof(S));
memset(T, false, sizeof(T));
memset(slack, INF, sizeof(slack));
if (dfs(i))
break;
else
update();
}
}
} int main() {
int i, j, k;
int ans; #ifndef ONLINE_JUDGE
freopen("data.in", "r", stdin);
freopen("data.out", "w", stdout);
#endif while (scanf("%d",&n)!=EOF) {
for (i=; i<=n; ++i)
for (j=; j<=n; ++j)
scanf("%d", &w[i][j]);
KM();
for (ans=,i=; i<=n; ++i)
if (link[i])
ans += w[link[i]][i];
printf("%d\n", ans);
} return ;
}

最新文章

  1. Macbook Pro 使用小记
  2. iOS/OSX学习资源
  3. web前端响应式
  4. Web APi之安装配置实现Cors跨域
  5. JS:采摘自JS精粹
  6. 使用 document.onreadystatechange()来判断页面加载完
  7. Phaser是一款专门用于桌面及移动HTML5 2D游戏开发的开源免费框架
  8. JavaScript基本类型比较
  9. 使用msm文件创建msi
  10. 虚拟桌面 VDI
  11. 鸟哥Linux学习笔记06
  12. Gradient Descent
  13. ConcurrentHashMap源码理解
  14. JVM调优之JMeter使用(三)
  15. [解决]WPF 在 win7 系统无法运行:FileNotFoundException
  16. 修改Nginx的header伪装服务器
  17. [Mysql 查询语句]——分组查询group by
  18. Django自定义模板函数
  19. [置顶] Isolation Forest算法实现详解
  20. [Java基础]List,Map集合总结

热门文章

  1. linux tar 压缩解压缩
  2. 配置toad进行导入导出数据库操作
  3. jquery插件下载地址
  4. 日志记录组件[Log4net]详细介绍
  5. java - import *
  6. 关于word-break,word-wrap换行
  7. Hadoop_Block的几种状态_DataNode
  8. ios动力特效,最重要的一点 属性保持(写了动力特效但是没效果的原因就在这里)
  9. Masonry等比缩放
  10. SQL语句like子句中的转义符 [转载]