题目地址:POJ2455

手残真浪费时间啊。。又拖到了今天才找出了错误。。每晚两道题不知不觉又变回了每晚一道题、。。sad。。

第一次在isap中忘记调用bfs,第二次则是遍历的时候竟然是从1開始遍历的。。。sad。。。

这题思路倒是非常easy,就是有一个比較坑的地方,就是这里的重边要当两条边来用,曾经受最短路什么的影响,直接把慢的删了,非常明显不正确。。。这里的两条重边都是能够走的。

建图思路是,将1当作源点,将n当作汇点。右边的地方就连边,注意是无向边。最后推断最大流是否等于道路条数。二分找最小值。

代码例如以下:

#include <iostream>
#include <stdio.h>
#include <string.h>
#include <stdlib.h>
#include <math.h>
#include <ctype.h>
#include <queue>
#include <map>
#include <algorithm>using namespace std;
const int INF=1e9;
int head[500], s, t, nv, cnt, sum;
int num[500], d[500], pre[500], cur[500], q[500];
struct node
{int u, v, cap, next;
}edge[5000000];
struct N
{int u, v, w;
}bian[5000000];
void add(int u, int v, int cap)
{edge[cnt].v=v;edge[cnt].cap=cap;edge[cnt].next=head[u];head[u]=cnt++;edge[cnt].v=u;edge[cnt].cap=cap;edge[cnt].next=head[v];head[v]=cnt++;
}
void bfs()
{memset(num,0,sizeof(num));memset(d,-1,sizeof(d));int f1=0, f2=0, i;q[f1++]=t;d[t]=0;num[0]=1;while(f1>=f2){int u=q[f2++];for(i=head[u];i!=-1;i=edge[i].next){int v=edge[i].v;if(d[v]==-1){d[v]=d[u]+1;num[d[v]]++;q[f1++]=v;}}}
}
int isap()
{memcpy(cur,head,sizeof(cur));int flow=0, u=pre[s]=s, i;bfs();while(d[s]<nv){if(u==t){int f=INF, pos;for(i=s;i!=t;i=edge[cur[i]].v){if(f>edge[cur[i]].cap){f=edge[cur[i]].cap;pos=i;}}for(i=s;i!=t;i=edge[cur[i]].v){edge[cur[i]].cap-=f;edge[cur[i]^1].cap+=f;}flow+=f;if(flow>=sum){return flow;}u=pos;}for(i=cur[u];i!=-1;i=edge[i].next){if(d[edge[i].v]+1==d[u]&&edge[i].cap){break;}}if(i!=-1){cur[u]=i;pre[edge[i].v]=u;u=edge[i].v;}else{if(--num[d[u]]==0) break;int mind=nv;for(i=head[u];i!=-1;i=edge[i].next){if(mind>d[edge[i].v]&&edge[i].cap){mind=d[edge[i].v];cur[u]=i;}}d[u]=mind+1;num[d[u]]++;u=pre[u];}}return flow;
}
int main()
{int n, p, a, b, c, i, j, top;while(scanf("%d%d%d",&n,&p,&sum)!=EOF){top=0;while(p--){scanf("%d%d%d",&a,&b,&c);bian[top].u=a;bian[top].v=b;bian[top++].w=c;}int high=1000001, mid, low=1, ans, x;while(low<=high){mid=(high+low)/2;s=1;t=n;nv=t+1;memset(head,-1,sizeof(head));cnt=0;for(i=0;i<top;i++){if(bian[i].w<=mid){add(bian[i].u,bian[i].v,1);}}x=isap();//printf("%d %d %d\n",x, mid,top);if(x>=sum){ans=mid;high=mid-1;}else{low=mid+1;}}printf("%d\n",ans);}return 0;
}

POJ 2455Secret Milking Machine(二分+网络流之最大流)相关推荐

  1. poj 2455 Secret Milking Machine(二分枚举+最大流)

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

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

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

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

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

  4. 【bzoj1532】[POI2005]Kos-Dicing 二分+网络流最大流

    题目描述 Dicing 是一个两人玩的游戏,这个游戏在Byteotia非常流行. 甚至人们专门成立了这个游戏的一个俱乐部. 俱乐部的人时常在一起玩这个游戏然后评选出玩得最好的人.现在有一个非常不走运的 ...

  5. poj 1064 java_poj 1064(二分答案)

    题意: 有N条绳子,长度分别为 length[1,2,3,........,N]. 如果从它们中切割出K条长度相同的绳子,这K条绳子每条最长有多长? 结果保留两位小数. 题解: 二分可能的长度. AC ...

  6. Linux等比数列脚本求和,POJ 1845 (约数和+二分等比数列求和)

    题目大意:A^B的所有约数和,mod 9901. 解题思路: ①整数唯一分解定理: 一个整数A一定能被分成:A=(P1^K1)*(P2^K2)*(P3^K3).....*(Pn^Kn)的形式.其中Pn ...

  7. POJ - 1905 (几何+二分)

    POJ - 1905 (几何+二分) 题目正文如下: When a thin rod of length L is heated n degrees, it expands to a new leng ...

  8. POJ 2391 Ombrophobic Bovines ★(Floyd+二分+拆点+最大流)

    [题意]有n块草地,一些奶牛在草地上吃草,草地间有m条路,一些草地上有避雨点,每个避雨点能容纳的奶牛是有限的,给出通过每条路的时间,问最少需要多少时间能让所有奶牛进入一个避雨点. 和POJ2112很类 ...

  9. 网络流初步:最大流(Dinic算法)

    网络流初步:最大流 标签: 网络流 最大流 Dinic 最大流 例题 POJ****(USACO4.2.1) 在农夫约翰的农场上,每逢下雨,Bessie最喜欢的三叶草地就积聚了一潭水.这意味着草地被水 ...

最新文章

  1. 基于SSM实现垃圾分类信息管理系统
  2. ajax和jsonp
  3. php获取p标签的值,js使用html()或text()方法获取设置p标签的显示的值
  4. Pwn环境配置(三)——ubuntu环境搭建
  5. 字符串、指针、引用、数组基础
  6. TCP/IP协议体系结构简介
  7. 数据结构 二叉树的递归建立和递归遍历
  8. Scanner类(next,nextLine,nextInt)的用法与常见问题
  9. 不要问我有多懒,写个脚本跑django
  10. 高效获得准确的中国地图数据并进行可视化
  11. wps日期加减算天数_日期相减之后的天数怎么用公式计算 - 卡饭网
  12. 你知道数字图像处理的经典Lenna图背后的故事吗
  13. 香槟分校计算机研究生专业,伊利诺伊大学香槟分校计算机专业排名好不好?
  14. 深度学习笔记(二十)Momentum动量梯度下降及RSMprop Adam优化算法
  15. Google I/O 2021:在重要时刻提供帮助
  16. 如何对儿童虐待照片进行地理定位?
  17. 汽车音响的各个按钮的功能汇总
  18. ElasticSearch语法整理-DSL语言高级查询
  19. [转]如何与老板谈加薪
  20. 世道变了,微软连Java都支持了

热门文章

  1. linux脚本 的使用,linux shell脚步使用讲解
  2. u盘读写测试_如何提高u盘读写速度 提高u盘读写速度方法【详细步骤】
  3. 【CV夏季划】告别入门,提升眼界,从掌握最有价值的那些CV方向开始
  4. 【知识星球】重要小结与涨价预告
  5. 【图像分类】 基于Pytorch的多类别图像分类实战
  6. 【模型解读】从LeNet到VGG,看卷积+池化串联的网络结构
  7. 中国定制家具行业消费规模与发展形势分析报告2022版
  8. 中国一次性塑料餐具市场运营动态及供需态势分析报告2022年版
  9. NSIS 的 Modern UI 教程(一)
  10. 携手长江天成转型 谋定·农业大健康-林裕豪:升级山茶油农产品