网络流 POJ2112
题意:K个产奶机,C头奶牛,每个产奶机最多可供M头奶牛使用;并告诉了产奶机、奶牛之间的两两距离Dij(0<=i,j<K+C)。
问题:如何安排使得在任何一头奶牛都有自己产奶机的条件下,奶牛到产奶机的最远距离最短?最短是多少?
建图 源点 -> 每头牛 -> 每个机器 -> 汇点
权 1 ? M
二分 找最远距离 里面最小的
二分距离 if dis[i][j]<dis 牛到机器的流量 1 也就是权
#include<stdio.h>
#include<algorithm>
#include<string.h>
#include<queue> using namespace std; #define MAXN 300
#define inf 100000000
int k,c,m,n;
int S,T; //我把源点和汇点 设成 0 n+1
int dis[MAXN][MAXN];
int z[MAXN][MAXN];
int vis[MAXN]; void floyed()
{
int i,j,k; for(k=;k<=n;k++)
{
for(i=;i<=n;i++)
{
for(j=;j<=n;j++)
{
if(dis[i][j]>dis[i][k]+dis[k][j])
dis[i][j]=dis[i][k]+dis[k][j];
}
}
}
}
void makemap(int w)
{
int i,j;
memset(z,,sizeof(z)); //反向边这边已经有了
for(i=k+;i<=n;i++)
z[][i]=;
for(i=;i<=k;i++)
z[i][n+]=m;
for(i=k+;i<=n;i++)
for(j=;j<=k;j++)
{
if(dis[i][j]<=w)
z[i][j]=;
}
}
int bfs()
{
memset(vis,-,sizeof(vis));
vis[S]=;
queue<int>q1;
q1.push(S);
int i;
while(!q1.empty())
{
int now=q1.front();
q1.pop();
for(i=;i<=n+;i++)
{
if(vis[i]<&&z[now][i])
{
q1.push(i);
vis[i]=vis[now]+;
}
}
}
return vis[T]!=-;
}
int dfs(int u,int w)
{
int ans=;
if(u==T)
return w;
int i;
for(i=;i<=n+;i++)
{
if(vis[i]==vis[u]+&&z[u][i])
{
int b=dfs(i,min(z[u][i],w-ans));
z[u][i]-=b;
z[i][u]+=b;
ans=ans+b;
}
}
return ans;
} int main()
{
while(scanf("%d%d%d",&k,&c,&m)!=EOF)
{
int i,j;
n=k+c; for(i=;i<=n;i++)
for(j=;j<=n;j++)
{
scanf("%d",&dis[i][j]);
if(dis[i][j]==)
dis[i][j]=inf;
}
floyed();
int L,R;
L=;
R=inf;
S=;
T=n+;
int ans=;
while(L<=R)
{
int w=,mid;
mid=(L+R)>>;
makemap(mid);
while(bfs())
w+=dfs(,inf);
if(w>=c)
{
ans=mid;
R=mid-;
}
else
L=mid+;
} printf("%d\n",ans);
} return ;
}
网络流 POJ2112的更多相关文章
- 网络流相关知识点以及题目//POJ1273 POJ 3436 POJ2112 POJ 1149
首先来认识一下网络流中最大流的问题 给定一个有向图G=(V,E),把图中的边看做成管道,边权看做成每根管道能通过的最大流量(容量),给定源点s和汇点t,在源点有一个水源,在汇点有一个蓄水池,问s-t的 ...
- POJ2112 Optimal Milking---二分+Floyd+网络流
题目链接: https://vjudge.net/problem/POJ-2112 题目大意: k个机器,每个机器最多服务m头牛. c头牛,每个牛需要1台机器来服务. 告诉你牛与机器每个之间的直接距离 ...
- POJ2112 Optimal Milking (网络流)(Dinic)
Optimal Milking Time Limit: 2000MS Memory Limit: 30000K T ...
- poj2112(网络流-最大流+二分)
题意:给你k个挤奶器,c头牛,每个挤奶器能放m头牛,问你奶牛需要走的最大距离最小是多少: 解题思路:因为最大距离最小,也就是求最小的距离满足所有牛都能到,所以我们先用floyd跑最短路,把所有点之间的 ...
- [Poj2112][USACO2003 US OPEN] Optimal Milking [网络流,最大流][Dinic+当前弧优化]
题意:有K个挤奶机编号1~K,有C只奶牛编号(K+1)~(C+K),每个挤奶机之多能挤M头牛,现在让奶牛走到挤奶机处,求奶牛所走的最长的一条边至少是多少. 题解:从起点向挤奶机连边,容量为M,从挤奶机 ...
- poj2112 网络流+二分答案
Optimal Milking Time Limit: 2000MS Memory Limit: 30000K Total Submissions: 18083 Accepted: 6460 ...
- POJ2391 Ombrophobic Bovines(网络流)(拆点)
Ombrophobic Bovines Time Limit: 1000MS Memory Limit: 65536K Total Submissions ...
- POJ 2391 Ombrophobic Bovines【二分 网络流】
题目大意:F个草场,P条道路(无向),每个草场初始有几头牛,还有庇护所,庇护所有个容量,每条道路走完都有时间,问所有奶牛都到庇护所最大时间最小是多少? 思路:和POJ2112一样的思路,二分以后构建网 ...
- plain framework 1 网络流 缓存数据详解
网络流是什么?为什么网络流中需要存在缓存数据?为什么PF中要采用缓存网络数据的机制?带着这几个疑问,让我们好好详细的了解一下在网络数据交互中我们容易忽视以及薄弱的一块.该部分为PF现有的网络流模型,但 ...
随机推荐
- System V进程间通信
一)Linux环境进程间通信(一)管道及有名管道http://www.ibm.com/developerworks/cn/linux/l-ipc/part1/二)Linux环境进程间通信(二): 信号 ...
- ADO.Net属性扩展
属性扩展 大体意思:有外键关系时将代号化信息处理成原始文字 如:Info表中的民族列显示的是民族代号处理成Nation表中的民族名称 需要在Info类里面扩展一个显示nation名称的属性 using ...
- luogu1003铺地毯[noip2011 提高组 Day1 T1]
题目描述 为了准备一个独特的颁奖典礼,组织者在会场的一片矩形区域(可看做是平面直角坐标系的第一象限)铺上一些矩形地毯.一共有 n 张地毯,编号从 1 到n .现在将这些地毯按照编号从小到大的顺序平行于 ...
- Memcached和Memcache安装(64位win7)
一.Memcached和Memcache的区别: 网上关于Memcached和Memcache的区别的理解众说纷纭,我个人的理解是: Memcached是一个内存缓存系统,而Memcache是php的 ...
- Java核心技术点之动态代理
本篇博文会从代理的概念出发,介绍Java中动态代理技术的使用,并进一步探索它的实现原理.由于个人水平有限,叙述中难免出现不清晰或是不准确的地方,希望大家可以指正,谢谢大家:) 一.概述 1. 什么是代 ...
- 方差分析 ANOVA
来源: http://blog.sciencenet.cn/blog-479412-391481.html 方差分析是为了比较多个总体样本均数是否存在差别.该方法有RA.Fisher首先提出,后来由G ...
- 046医疗项目-模块四:采购单模块—采购单审核(Dao,Service,Action三层)
当医院把采购单提交之后,由监管单位进行采购单审核,由卫生院及卫生局进行审核.卫生局可以审核所有医院创建的采购单,卫生院只审核本辖区医院创建的采购单. 操作流程: 点击"采购单审核" ...
- win7 IIS7.5配置伪静态
转自:http://www.cnblogs.com/luckly-hf/archive/2013/03/07/2947687.html 第一部: 从如下地址中下载URLRewriter组件组件: 官方 ...
- CSS高级知识
1.CSS变换 2.CSS动画 3.CSS高级特性及兼容性:http://caniuse.com/
- 20160803 - C:\WINDOWS\system32\config\systemprofile\Desktop 不可用的解决
问题:某些软件在从注册表读取用户桌面地址时,欠考虑的%USERPROFILE%的情况,例如迅雷打开文件时,会提示: [Window Title]位置不可用 [Content]C:\WINDOWS\sy ...