KM板题:

#include <bits/stdc++.h>
using namespace std; inline void read(int &num)
{
char ch; num = 0; int flag = 1;
while((ch=getchar()) < '0' || ch > '9')if(ch == '-') flag = -flag;
while(ch >= '0' && ch <= '9') num = num*10 + ch-'0', ch = getchar();
num *= flag;
}
const int MAXN = 25;
int n, m, w[MAXN][MAXN], x, cy[MAXN], dbx[MAXN], dby[MAXN], pre[MAXN], slk[MAXN];
bool vis[MAXN];
void bfs(int now)
{
memset(vis, 0, sizeof vis);
memset(slk, 0x3f, sizeof slk);
int x, y = 0, Minloc;
cy[y] = now;
do {
x = cy[y]; vis[y] = 1; Minloc = 0;
for(int i = 1; i <= n; i++) if(!vis[i])
{
if(dbx[x]+dby[i]-w[x][i] < slk[i]) slk[i] = dbx[x]+dby[i]-w[x][i], pre[i] = y;
if(slk[i] < slk[Minloc]) Minloc = i;
}
for(int i = 0, inc = slk[Minloc]; i <= n; i++)
if(vis[i]) dbx[cy[i]] -= inc, dby[i] += inc;
else slk[i] -= inc;
y = Minloc;
}while(~cy[y]);
while(y) cy[y] = cy[pre[y]], y = pre[y];
} int KM()
{
memset(cy, -1, sizeof cy);
for(int i = 1; i <= n; i++) bfs(i);
int ret = 0;
for(int i = 1; i <= n; i++) ret += w[cy[i]][i];
return ret;
} int main()
{
read(n);
for(int i = 1; i <= n; ++i)
for(int j = 1; j <= n; ++j)
read(w[i][j]);
for(int i = 1, x; i <= n; ++i)
for(int j = 1; j <= n ; ++j)
read(x), w[j][i] *= x;
printf("%d\n", KM());
}

最新文章

  1. reborn to freelancer
  2. ORACLE10g创建表空间,角色与授权
  3. Android 网络请求库volley的封装,让请求更方便
  4. javascript中的事件委托
  5. 解决装系统选中的磁盘采用的是GPT分区形式
  6. Cocos2dx框架常用单词(一)
  7. PCA和Softmax分类比较—Mnist与人脸数据集
  8. JavaScript字符串转日期格式
  9. StyleCop学习笔记——自定义规则
  10. js获取fck值的代码方法
  11. JavaScript 设计风格&amp;模式 概览 20140418
  12. Android color(颜色) 在XML文件和java代码中
  13. Java学习的随笔(一)对象概念、this指针、权限修饰符
  14. 转载Spring IntrospectorCleanupListener
  15. node基础篇一:node介绍、node http、node event 课堂(持续)
  16. nova创建虚拟机源码分析系列之四 nova代码模拟
  17. 影响 MySQL Server 性能的相关因素
  18. 【log4j2】log4j的升级版log4j2的简单入门使用
  19. 解题6(OutputNMin)
  20. [java] DOS编译 .java 文件得到 .class 文件 并执行 以及使用外部 .jar包 时的命令

热门文章

  1. 纪一次线上cms调优
  2. springboot异步线程(二)
  3. Java学习之旅(二):生病的狗2(java例化)
  4. Python 入门(2):数据类型
  5. Linux 服务器管理建议
  6. yum命令安装jdk
  7. MOOC 数据库笔记(三):关系模型之基本概念
  8. .net Dapper 实践系列(2) ---事务添加(Layui+Ajax+Dapper+MySQL)
  9. 用lua求两个数组的交集、并集和补集。
  10. docker下安装mysql数据库