【POJ - 1273】Drainage Ditches(网络流,最大流,模板)
题干:
现在有m个池塘(从1到m开始编号,1为源点,m为汇点),及n条水渠,给出这n条水渠所连接的点和所能流过的最大流量,求从源点到汇点能流过的最大流量。
Input
输入包括几种情况。 对于每种情况,第一行包含两个空格分隔的整数,N(0 <= N <= 200)和M(2 <= M <= 200)。 N是Farmer John挖的沟渠数量。 M是那些沟渠的交叉点。 以下N行中的每一行包含三个整数,Si,Ei和Ci。 Si和Ei(1 <= Si,Ei <= M)表示该沟渠流动的交叉点。 水将从Si流到Ei。 Ci(0 <= Ci <= 10,000,000)是水流过沟渠的最大速率。
Output
最大流量
Sample Input
5 4
1 2 40
1 4 20
2 4 20
2 3 30
3 4 10
Sample Output
50
解题报告:
这是一道KK,EK,dinic都可以0ms跑过的板子题。。
AC代码:
#include<cstring>
#include<cstdio>
#include<algorithm>
using namespace std;
int n,m;
int tot;
struct Edge {int to,ne,v;
} e[100005 * 2];
int head[10005];
int st,ed;
int dis[10050],q[10005];//一共多少个点跑bfs,dis数组和q数组就开多大。
void insert(int u,int v,int w) {e[++tot].to=v;e[tot].v=w;e[tot].ne=head[u];head[u]=tot;
}
bool bfs(int st,int ed) {memset(dis,-1,sizeof(dis));int front=0,tail=0;q[tail++]=st;dis[st]=0;while(front<tail) {int cur = q[front];front++;for(int i = head[cur]; i!=-1; i = e[i].ne) {if(e[i].v&&dis[e[i].to]<0) {q[tail++]=e[i].to;dis[e[i].to]=dis[cur]+1;}}}if(dis[ed]==-1) return 0;return 1;
}
int dfs(int cur,int f) {if(cur==ed) return f;int w,flow=0;for(int i = head[cur]; i!=-1; i = e[i].ne) { if(e[i].v&&dis[e[i].to]==dis[cur]+1) {w=f-flow;w=dfs(e[i].to,min(w,e[i].v));e[i].v-=w;e[i+1].v+=w;flow+=w;if(flow==f) return f;} }if(!flow)dis[cur]=-1;return flow;
}
int dinic() {int ans = 0;while(bfs(st,ed)) ans+=dfs(st,0x7fffffff);return ans;
}
int main() {while(~scanf("%d%d",&m,&n)) {tot=2;st=1,ed=n;for(int i = 1; i<=n; i++) head[i] = -1;for(int a,b,c,i = 1; i<=m; i++) {scanf("%d%d%d",&a,&b,&c);insert(a,b,c);insert(b,a,0);} printf("%d\n",dinic()); }return 0;
}
【POJ - 1273】Drainage Ditches(网络流,最大流,模板)相关推荐
- 网络流--最大流--POJ 1273 Drainage Ditches
链接 Description Every time it rains on Farmer John's fields, a pond forms over Bessie's favorite clov ...
- [POJ 1273]Drainage Ditches
[问题描述] Every time it rains on Farmer John's fields, a pond forms over Bessie's favorite clover patch ...
- POJ - 1273 Drainage Ditches(最大流)
题目链接:点击查看 题目大意:现在一共有n个节点,需要修建m条水渠将池塘的水引入小溪,点1代表池塘,点n代表小溪,每条水渠都有一定的排水能力,问最大的排水效率是多少 题目分析:网络流的模板题,直接套板 ...
- POJ 1273 Drainage Ditches 最大流
很裸的最大流问题,不过注意会有重边,o(╯□╰)o,被阴了WA了一发 还有就是要用long long #include <cstdio> #include <cstring> ...
- POJ 1273 Drainage Ditches
网络流. 题意非常easy.给出单向边,容量. 找最大流.注意重边要加起来.g[u][v].c+=c; 第一次写网络流. 也是第一个网络流的题. 看了两天,理解了之后就唰唰唰的写出来了. 大概可能是E ...
- USACO Section 4.2 Drainage Ditches(最大流)
最大流问题.ISAP算法.注意可能会有重边,不过我用的数据结构支持重边.距离d我直接初始化为0,也可以用BFS逆向找一次. -------------------------------------- ...
- usaco Drainage Ditches(网络流dinic模板)
模板题 /* ID:jinbo wu TASK:ditch LANG:C++ */#include<bits/stdc++.h> using namespace std; #define ...
- POJ1273 Drainage Ditches(最大流基础题)
在讨论问题之前先说一句,如果你这题WA了很久,请先看以下一句话,或许可以省下你翻遍全文的时间: 注意考虑重边.(是不是想大呼[Bi-]?传送门:http://poj.org/problem?id=12 ...
- POJ - 1459 Power Network(网络流-最大流)
题目链接:点击查看 题目大意:题意属实恶心,借用别的大佬的题意: 题目描述 一个电网包含一些结点(电站.消费者.调度站),这些结点通过电线连接.每个结点 uu 可能被供给 s(u) 的电能, s(u) ...
- 网络流 费用流 模板 ISAP+SPFA+ZKW
2020年4月20日重新发布.7年前的文章,几年前CSDN改版的时候变成了私密--重新发一下吧. 关于费用流ZKW算法的讲解:从入门到精通: 最小费用流的"zkw算法" 关于Din ...
最新文章
- oracle相关操作
- [C# 网络编程系列]专题七:UDP编程补充——UDP广播程序的实现
- 个人副业在家可做大学生首选小程序创业项目
- java双等号比较字符串,Java与两个字符串==比较是错误的?
- python项目部署失败的原因_python项目环境部署(一)
- opencv 图片叠加_OpenCVSharp学习之——ROI与图像叠加
- Docker启动失败 提示An error occurred和乱码
- Haproxy安装及配置(转)
- math.floor()和math.ceil()的使用
- 看mysql版本信息_查看mysql 的版本信息
- win10如何用管理员权限去运行服务器,让Visualstudio在win10下使用管理员方式运行...
- 2016保持谦卑,继续前行
- 项目管理-项目整体计划Excel表格绘制
- 七月算法-P2 概率论与数理统计(1)
- 南昌航空大学计算机控制实验,南昌航空大学关于实验教学的管理办法
- 201771010112罗松《面向对象程序设计(java)》第一周学习总结
- 《南方周末》今日发文揭开了这场抢票插件阻击战的内幕
- 国企安逸?我笑了……
- 一名合格的大数据测试工程师,需要掌握哪些基本知识
- java实现美图秀秀的照片拼接功能(照片数量任意)
热门文章
- 服务器重装后怎么装系统,服务器如何安装系统,小编教你如何安装
- PHP与MySQL案例剖析_PHP与MySQL案例剖析
- 脚本启动慢_Linux 常用运维脚本,建议收藏
- linux消息框架,远程处理器消息框架 - 基于Linux 简化 AMP 配置使其更方便更动态地分配资源...
- 三级菜单 python_python三级菜单
- 反序列化对象列表发生异常_通过反序列化漏洞,黑客能做什么呢?
- 通用即插即用监视器驱动下载_电脑设备驱动程序有问题,教你3招,快速修复...
- 小米路由器怎么连接无盘服务器,播放器+服务器的方法瞬间玩转小米路由方法图文介绍...
- apache根据ip分发_腾讯广告进入“IP新融点”时代
- 大表与大表join数据倾斜_技术分享|大数据技术初探之Spark数据倾斜调优