题意:

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

思路:二分答案+网络流判定。
二分枚举最大边权,重新建图,只保存权不超过最大边权的边。即如果边的长度小于等于我们规定的最大边权 则添加这条边 权值为1, 否则标记为0

然后在网络中起点终点间的容量是原图中的路径数,判断最大流是否>=T

这里要注意的是,本题给的双向边,所以在添加反向弧时,容量应该等于正向弧。

#include<iostream>
#include<cstdio>
#include<cstring>
#include<queue>
using namespace std;const int maxn = 205;
const int INF = 0x3f3f3f3f;
struct Edge
{int from,to,next,w;
}edge[2*maxn*maxn],E[maxn*maxn];
int n,m,cnt,head[maxn];
int level[maxn];void addedge(int u,int v,int w)
{edge[cnt].to = v;edge[cnt].w = w;edge[cnt].next = head[u];head[u] = cnt++;swap(u,v);edge[cnt].to = v;edge[cnt].w = w;edge[cnt].next = head[u];head[u] = cnt++;
}void build(int limit)
{cnt = 0;memset(head,-1,sizeof(head));for(int i = 1; i <= m; i++)if(E[i].w <= limit)addedge(E[i].from,E[i].to,1);
}int BFS(int src,int des){queue<int> q;memset(level,0,sizeof(level));level[src]=1;q.push(src);while(!q.empty()){int u = q.front();q.pop();if(u==des) return 1;for(int k = head[u];k!=-1;k=edge[k].next){int v = edge[k].to,w=edge[k].w;if(level[v]==0&&w!=0){level[v]=level[u]+1;q.push(v);}}}return -1;
}
int dfs(int u,int des,int increaseRoad){if(u==des) return increaseRoad;int ret=0;for(int k=head[u];k!=-1;k=edge[k].next){int v = edge[k].to, w = edge[k].w;if(level[v] == level[u] + 1 && w != 0){int MIN = min(increaseRoad-ret,w);w = dfs(v,des,MIN);if(w > 0){edge[k].w -=w;edge[k^1].w+=w;ret+=w;if(ret==increaseRoad) return ret;}else level[v] = -1; }}return ret;
}
int Dinic(int src,int des){int ans = 0;while(BFS(src,des)!=-1) ans+=dfs(src,des,INF);return ans;
}int main()
{int t;while(scanf("%d%d%d",&n,&m,&t)!=EOF){for(int i = 1; i <= m; i++)scanf("%d%d%d",&E[i].from,&E[i].to,&E[i].w);int l = 1, r = 1000000, mid,ans;while(l <= r){mid = (l + r) >> 1;build(mid);int tmp = Dinic(1,n);if(tmp >= t){ans = mid;r = mid - 1;}else l = mid + 1;}printf("%d\n",ans);}return 0;
}

poj 2455 Secret Milking Machine(二分枚举+最大流)相关推荐

  1. POJ 2455 Secret Milking Machine 二分枚举 + 最大流

    题目:http://poj.org/problem?id=2455 题意:给定一张无向图,有n个节点p条边,要求在图中从1到n找到t条路径,并且使这t条路径中的最长边最小,输出这个最小的最长边 思路: ...

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

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

  3. POJ 2455 Secret Milking Machine

    POJ_2455 每条路只走一次可以通过网络流来保证,而对于让最长的边最小可以通过二分枚举来搞定. #include<stdio.h> #include<string.h> # ...

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

    POJ 2112 Optimal Milking 题目链接 题意:给定一些机器和奶牛,在给定距离矩阵,(不在对角线上为0的值代表不可达),每一个机器能容纳m个奶牛.问全部奶牛都能挤上奶,那么走的距离最 ...

  5. Secret Milking Machine POJ - 2455

    点击打开链接 二分最大边 记为lim 不超过lim的边容量记为1 否则记为0 再抽象一个源点 从源点到1的容量为题目所给的t 然后以此建图 看是否满流 感觉网络流的抽象建图很关键 这道题看了别人的建图 ...

  6. POJ2455 Secret Milking Machine【二分,最大流】

    题目大意:N个点P条边,令存在T条从1到N的路径,求路径上的边权的最大值最小为多少 思路:做了好多二分+最大流的题了,思路很好出 二分出最大边权后建图,跑dinic 问题是....这题是卡常数的好题! ...

  7. poj2455 Secret Milking Machine(二分答案+最大流)

    二分答案,双向边网络流,反向边容量直接设为val即可.可以选择的边容量为1,跑最大流,看是否满流(是否存在K条路径). #include <cstdio> #include <cst ...

  8. BZOJ1733: [Usaco2005 feb]Secret Milking Machine 神秘的挤奶机

    n<=200个点m<=40000条边无向图,求   t次走不经过同条边的路径从1到n的经过的边的最大值   的最小值. 最大值最小--二分,t次不重边路径--边权1的最大流. 1 #inc ...

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

    题意:K个产奶机,C头奶牛,每个产奶机最多可供M头奶牛使用:并告诉了产奶机.奶牛之间的两两距离Dij(0<=i,j<K+C). 问题:如何安排使得在任何一头奶牛都有自己产奶机的条件下,奶牛 ...

最新文章

  1. Spring 自动化装配Bean
  2. catkin_make后输出:No module named ‘catkin_pkg‘
  3. 真正理解线程上下文类加载器(多案例分析)
  4. select元素的各种jquery修改获取添加方法
  5. (译+原)std::shared_ptr及std::unique_ptr使用数组
  6. 二维动画作品_「咻动画」二维动画制作中角色造型的设计要点
  7. c# 去除转义符号_c#语法
  8. Hadoop2之NameNode HA详解
  9. Android中的AnimationDrawable的使用
  10. java 后端与前端Date类型与String类型互相转换(使用注解)
  11. 如何避免单元测试陷阱?
  12. 保证可见性_十年程序员浅谈并发的原子性、可见性、有序性
  13. 【联想启天M4350】Windows 7下安装Yosemite 10.10.1懒人版
  14. java string通配符_java通配符
  15. HDU - 1548 A strange lift
  16. am335x linux 的uboot工作流程.doc,am335x uboot2016.05 (MLO u-boot.img)执行流程(转)
  17. unity animator动画融合时的上下半身速度分离控制
  18. Python--面向对象进阶
  19. Unity—常用API(重点)
  20. 入门铺路——python

热门文章

  1. cmd 找不到java power 可以_高三总是找不到学习状态?这几个方法一定可以帮到你!...
  2. 混沌大学签约神策数据,加快颠覆式创新教学步伐
  3. VS 2005/2008 开发工具中 使用正则表达式查找替换的使用说明
  4. ADO.NET入门教程(一) 初识ADO.NET
  5. java虚拟机及加载class文件的原理机制
  6. 25个优秀的jQuery滑块教程和插件
  7. 解决打开WORD错误报告问题
  8. 计算机及其系统的泄密渠道之三
  9. logic demonstration process in the English debate system
  10. 如何管理和组织一个智库?参考西交利物浦大学智库治理结构和我的偶像们的成长路径!