<题目链接>

题目大意:

FJ有N块地,这些地之间有P条双向路,每条路的都有固定的长度l。现在要你找出从第1块地到第n块地的T条不同路径,每条路径上的路段不能与先前的路径重复,问这些路径中的最长路段的最小值是多少。

解题分析:

最小的最大值问题,依然需要用二分答案,枚举出该最大路段的长度,然后将所有小于等于这个值得路段加入网络,将这些路段的容量置为1。因为是无向图,所以正、反向弧的容量都置为1,之后跑一遍最大流,再根据最大流和T的大小关系来判断。

 #include <cstdio>
#include <cstring>
#include <queue>
#include <algorithm>
using namespace std; #define INF 0x3f3f3f3f
#define mem(a,b) memset(a,b,sizeof(a))
const int N=; struct Edge{
int u,v,c;
}edge[N*N*]; struct Segment{
int a,b,len;
}seg[N*N]; int d[N],cur[N];
int head[N],next[N*N*];
int n,m,k,maxlen,minlen,cnt; void addedge(int u,int v,int w){
edge[cnt].u=u;edge[cnt].v=v,edge[cnt].c=w;
next[cnt]=head[u],head[u]=cnt++; edge[cnt].u=v;edge[cnt].v=u,edge[cnt].c=w;
next[cnt]=head[v],head[v]=cnt++;
} int bfs(int s,int t){
queue<int> q;
mem(d,);
d[s]=;
q.push(s);
while(!q.empty()){
int x=q.front();q.pop();
for(int i=head[x];i!=-;i=next[i]){
if(edge[i].c> && !d[edge[i].v]){
d[edge[i].v]=d[x]+;
q.push(edge[i].v);
}
}
}
return d[t];
} int dfs(int x,int a){
if(x==n || a==)return a;
int t,f,flow=;
for(int& i=cur[x];i!=-;i=next[i]){
if(d[x]+==d[edge[i].v] && (f=dfs(edge[i].v,min(a,edge[i].c)))>){
edge[i].c-=f;
edge[i^].c+=f;
flow+=f;
a-=f;
if(!a)break;
}
}
return flow;
} int dinic(int s,int t,int limit){
int i,ret=;
while(bfs(s,t)){
for(i=;i<=n;i++)cur[i]=head[i];
ret+=dfs(s,INF);
}
return ret;
} int binary_solve(){
int low=minlen,high=maxlen;
while(low<high){ //这个二分答案部分对格式还是有点疑惑
int mid=(low+high)>>;
cnt=;mem(head,-); //init()
for(int i=;i<m;i++) //加入所有满足要求的边
if(seg[i].len<=mid)
addedge(seg[i].a,seg[i].b,);
int t=dinic(,n,mid);
if(t<k)low=mid+;
else high=mid;
}
return low;
} int main(){
while(~scanf("%d%d%d",&n,&m,&k)){
maxlen=-INF;minlen=INF;
for(int i=;i<m;i++){
scanf("%d%d%d",&seg[i].a,&seg[i].b,&seg[i].len);
maxlen=max(maxlen,seg[i].len);
minlen=min(minlen,seg[i].len);
}
printf("%d\n",binary_solve());
}
return ;
}

2018-11-24

POJ 2455 Secret Milking Machine 【二分】+【最大流】的更多相关文章

  1. POJ 2455 Secret Milking Machine (二分 + 最大流)

    题目大意: 给出一张无向图,找出T条从1..N的路径,互不重复,求走过的所有边中的最大值最小是多少. 算法讨论: 首先最大值最小就提醒我们用二分,每次二分一个最大值,然后重新构图,把那些边权符合要求的 ...

  2. poj 2455 Secret Milking Machine 二分+最大流 sap

    题目:p条路,连接n个节点,现在需要从节点1到节点n,不重复走过一条路且走t次,最小化这t次中连接两个节点最长的那条路的值. 分析:二分答案,对于<=二分的值的边建边,跑一次最大流即可. #in ...

  3. POJ 2455 Secret Milking Machine(最大流+二分)

    Description Farmer John is constructing a new milking machine and wishes to keep it secret as long a ...

  4. POJ 2455 Secret Milking Machine (二分+无向图最大流)

    [题意]n个点的一个无向图,在保证存在T条从1到n的不重复路径(任意一条边都不能重复)的前提下,要使得这t条路上经过的最长路径最短. 之所以把"经过的最长路径最短"划个重点是因为前 ...

  5. POJ 2455 Secret Milking Machine(搜索-二分,网络流-最大流)

    Secret Milking Machine Time Limit: 1000MS   Memory Limit: 65536K Total Submissions: 9658   Accepted: ...

  6. POJ 2455 - Secret Milking Machine

    原题地址:http://poj.org/problem?id=2455 题目大意:给出一个N个点的无向图,中间有P条边,要求找出从1到n的T条通路,满足它们之间没有公共边,并使得这些通路中经过的最长的 ...

  7. POJ 2112 Optimal Milking(二分+最大流)

    http://poj.org/problem?id=2112 题意: 现在有K台挤奶器和C头奶牛,奶牛和挤奶器之间有距离,每台挤奶器每天最多为M头奶挤奶,现在要安排路程,使得C头奶牛所走的路程中的最大 ...

  8. POJ - 2112 Optimal Milking (dijkstra + 二分 + 最大流Dinic)

    (点击此处查看原题) 题目分析 题意:在一个农场中有k台挤奶器和c只奶牛,每个挤奶器最多只能为m只奶牛挤奶,每个挤奶器和奶牛都视为一个点,将编号1~k记为挤奶器的位置,编号k+1~k+c记为奶牛的位置 ...

  9. POJ 2112 Optimal Milking (Floyd+二分+最大流)

    [题意]有K台挤奶机,C头奶牛,在奶牛和机器间有一组长度不同的路,每台机器每天最多能为M头奶牛挤奶.现在要寻找一个方案,安排每头奶牛到某台机器挤奶,使得C头奶牛中走过的路径长度的和的最大值最小. 挺好 ...

随机推荐

  1. ADO.NET连接字符串大全---各种数据库的连接字符串

    ADO.NET连接字符串大全 ADO.NET连接字符串 名称 ADO.NET连接字符串 说明 ADO.NET连接字符串:SQL Server,SQL Server 2005,ACCESS,Oracle ...

  2. Confluence 6 临时目录(安装目录)

    temp 目录是由 Java 运行时进行配置的,同时一些 Confluence 的组件将会写入历史文件或者锁定文件到这个目录中. 临时目录位于安装目录下的 /temp 目录中. 希望修改这个目录的位置 ...

  3. (六)STL仿函数functor

    1.仿函数为算法服务,特点是重载操作符() 2.一共分为3大类,包括算术类,逻辑运算类,相对关系(比较大小):都继承了binary_function 3.仿函数的一些调用示例,其中右边的仿函数没有继承 ...

  4. 用json获取拉钩网的信息

    class LaoGo(object): def __init__(self): self.url="http://www.lagou.com/lbs/getAllCitySearchLab ...

  5. Cookie禁用了,Session还能用吗?原因详解

    Cookie与 Session,一般认为是两个独立的东西,Session采用的是在服务器端保持状态的方案,而Cookie采用的是在客户端保持状态的方案.但为什么禁用Cookie就不能得到Session ...

  6. DSB

    Linux day01 计算机硬件知识整理 作业要求:整理博客,内容如下 编程语言的作用及与操作系统和硬件的关系 应用程序->操作系统->硬件 cpu->内存->磁盘 cpu与 ...

  7. java web----MINA框架使用

    前期准备 1.下载 http://mina.apache.org/ 2.将依赖包添加到工程目录下(在工程目录下创建libs(directory目录)) 3.将 slf4j-api-1.7.26.jar ...

  8. vue项目使用阿里巴巴矢量图标库教程

    前言:element-ui自带的图标库还是不够全,还是需要需要引入第三方icon,自己在用的时候一直有些问题,参考了些教程,详细地记录补充下. 对于我们来说,首选的当然是阿里icon库 地址:http ...

  9. Jmeter卡住解决方案

    windows环境下,修改jmeter.bat: set HEAP=-Xms256m -Xmx256m set NEW=-XX:NewSize=128m -XX:MaxNewSize=128m 改为: ...

  10. C++ Primer 笔记——基本内置类型

    1.算术类型分为两类:整型和浮点型.算术类型的尺寸在不同机器上有所差别,下表列出了C++标准规定的尺寸的最小值.同时允许编译器赋予这些类型更大的尺寸. 一个char的大小和一个机器字节一样. 一个in ...