链接

floyd求出牛到机器的最短距离,二分距离,小于当前距离的边容量设为1,求出满容量下的最短距离。

EK算法

 #include <iostream>
#include<cstdio>
#include<cstring>
#include<algorithm>
#include<stdlib.h>
#include<vector>
#include<cmath>
#include<queue>
#include<set>
using namespace std;
#define N 255
#define LL long long
#define INF 0xfffffff
const double eps = 1e-;
const double pi = acos(-1.0);
const double inf = ~0u>>;
int path[N],flow[N],gh[N][N],st,en;
int w[N][N];
int bfs()
{
int i;
memset(path,-,sizeof(path));
for(i = ; i <= en ; i++)
flow[i] = INF;
queue<int>q;
q.push();
while(!q.empty())
{
int tk = q.front();
q.pop();
if(tk==en)
break;
for(i = ; i <= en ; i++)
{
if(path[i]==-&&gh[tk][i])
{
path[i] = tk;
flow[i] = min(flow[tk],gh[tk][i]);
q.push(i);
}
}
}
if(path[en]==-)
return -;
return flow[en];
}
int EK()
{
int now,pre,sum=,k;
while((k=bfs())!=-)
{
sum+=k;
now = en;
while(now!=st)
{
pre = path[now];
gh[pre][now]-=k;
gh[now][pre]+=k;
now = pre;
}
}
return sum;
}
int main()
{
int k,c,i,g,j,m;
while(scanf("%d%d%d",&k,&c,&m)!=EOF)
{
int n = k+c;
for(i = ; i <= n+; i++)
for(j = ;j <= n+ ; j++)
w[i][j] = INF;
for(i = ;i <= n+ ; i++)
for(j = ; j <= n+ ; j++)
{
scanf("%d",&w[i][j]);
if(w[i][j]==) w[i][j] = INF;
if(i==j) w[i][i] = ;
w[j][i] = w[i][j];
}
for(i = ; i <= n+; i++)
for(j = ; j <= n+ ;j++)
for(g = ;g <= n+; g++)
w[j][g] = min(w[j][g],w[j][i]+w[i][g]);
st = ;
en = n+;
int low = ,high = ,mid;
while(low<=high)
{
mid = (low+high)>>;
memset(gh,,sizeof(gh));
for(i = ; i <= k+ ; i++)
gh[i][en] = m;
for(i = k+; i <= n+; i++)
gh[st][i] = ;
for(i = k+; i <= n+; i++)
for(j = ; j <= k+ ; j++)
if(w[i][j]<=mid)
gh[i][j] = w[i][j];
//cout<<EK()<<endl;
if(EK()==c)
high = mid-;
else
low =mid+;
}
cout<<low<<endl;
}
return ;
}

最新文章

  1. java web(七)Cookie的简单使用
  2. java并发编程学习: 守护线程(Daemon Thread)
  3. 几种常见语言的命名空间(Namespace)特性
  4. 解猜数字(XAXB)
  5. HDU 2795 Billboard (线段树)
  6. vim中使用gdb。
  7. JSONObject和JSONArray
  8. jquery serialize 和 console 漫谈
  9. Python 第五天
  10. iOS开发之一:入门介绍
  11. SQL 存储过程中事务回滚
  12. 补习系列(1)-springboot项目基础搭建课
  13. 轮询、长轮询、websock
  14. JXOI 2017 简要题解
  15. unity中Event Trigger组件应用代码
  16. 罗技 M558 鼠标维修记录
  17. Scrum Meeting 11.06
  18. 1.node.js下载
  19. 20155229 2016-2017-2 《Java程序设计》第二周学习总结
  20. (转载)设置环境变量永久生效和临时生效 export PS1

热门文章

  1. 【翻译自mos文章】即使resource_limit = false, password的 资源限制也会生效
  2. Adobe 官方公布的 RTMP 规范
  3. 使用pyinstaller----python转exe
  4. java回调机制及其实现
  5. VC++编译说明
  6. 「LuoguP3381」【模板】最小费用最大流
  7. [laravel]请求处理
  8. iOS 中的 Block
  9. excel的部分使用方法
  10. NC文件的处理【netcdf】