USACO 4.2 Drainage Ditches(网络流模板题)
Drainage Ditches
Hal Burch
Every time it rains on Farmer John's fields, a pond forms over Bessie's favorite clover patch. This means that the clover is covered by water for awhile and takes quite a long time to regrow. Thus, Farmer John has built a set of drainage ditches so that Bessie's clover patch is never covered in water. Instead, the water is drained to a nearby stream. Being an ace engineer, Farmer John has also installed regulators at the beginning of each ditch, so he can control at what rate water flows into that ditch.
Farmer John knows not only how many gallons of water each ditch can transport per minute but also the exact layout of the ditches, which feed out of the pond and into each other and stream in a potentially complex network. Note however, that there can be more than one ditch between two intersections.
Given all this information, determine the maximum rate at which water can be transported out of the pond and into the stream. For any given ditch, water flows in only one direction, but there might be a way that water can flow in a circle.
PROGRAM NAME: ditch
INPUT FORMAT
| Line 1: | Two space-separated integers, N (0 <= N <= 200) and M (2 <= M <= 200). N is the number of ditches that Farmer John has dug. M is the number of intersections points for those ditches. Intersection 1 is the pond. Intersection point M is the stream. |
| Line 2..N+1: | Each of N lines contains three integers, Si, Ei, and Ci. Si and Ei (1 <= Si, Ei <= M) designate the intersections between which this ditch flows. Water will flow through this ditch from Si to Ei. Ci (0 <= Ci <= 10,000,000) is the maximum rate at which water will flow through the ditch. |
SAMPLE INPUT (file ditch.in)
5 4
1 2 40
1 4 20
2 4 20
2 3 30
3 4 10
OUTPUT FORMAT
One line with a single integer, the maximum rate at which water may emptied from the pond.
SAMPLE OUTPUT (file ditch.out)
50
————————————————————————————————————————————————
它有个俗名叫草地排水
/*
ID:ivorysi
PROG:ditch
LANG:C++
*/
#include <iostream>
#include <cstdio>
#include <cstring>
#include <queue>
#include <set>
#include <vector>
#define inf 0x7fffffff
#define ivorysi
#define siji(i,x,y) for(int i=x;i<=y;++i)
#define gongzi(j,x,y) for(int j=x;j>=y;--j)
#define xiaosiji(i,x,y) for(int i=x;i<y;++i)
#define sigongzi(j,x,y) for(int j=x;j>y;--j)
using namespace std;
struct node {
int to,next,val;
}edge[];
int head[],sum=;
void add(int u,int v,int c) {
edge[++sum].to=v;
edge[sum].next=head[u];
edge[sum].val=c;
head[u]=sum;
}
void AddTwoWays(int u,int v,int c) {
add(u,v,c);
add(v,u,);//反向边
}
int n,m,dis[],gap[],ans;
int sap(int u,int aug){//O(玄学)
if(u==m) return aug;
int dmin=m-,flow=,v,t; for(int i=head[u];i;i=edge[i].next) {
v=edge[i].to;
if(edge[i].val>) {//只有还能流动的地方才能分层
if(dis[u]==dis[v]+) {
t=sap(v,min(aug-flow,edge[i].val));//限制流量不超过该点流量和边的限制
edge[i].val-=t;
edge[i^].val+=t;
flow+=t;
if(aug==flow) return flow;//流尽
if(dis[]>=m) return flow;//搜索已在某处达到结束条件
}
dmin=min(dmin,dis[v]);
}
}
if(!flow) {
--gap[dis[u]];
if(gap[dis[u]]==) dis[]=m;//出现断层说明无法再流
dis[u]=dmin+;//分层
++gap[dis[u]];
}
return flow;
}
int main(int argc, char const *argv[])
{
#ifdef ivorysi
freopen("ditch.in","r",stdin);
freopen("ditch.out","w",stdout);
#else
freopen("f1.in","r",stdin);
#endif
scanf("%d%d",&n,&m);
int u,v,c;
siji(i,,n) {
scanf("%d%d%d",&u,&v,&c);
AddTwoWays(u,v,c);
}
while(dis[]<m) {ans+=sap(,inf);}
printf("%d\n",ans);
return ;
}
USACO 4.2 Drainage Ditches(网络流模板题)的更多相关文章
- POJ 1273:Drainage Ditches 网络流模板题
Drainage Ditches Time Limit: 1000MS Memory Limit: 10000K Total Submissions: 63339 Accepted: 2443 ...
- HDU 1532 Drainage Ditches(网络流模板题)
题目大意:就是由于下大雨的时候约翰的农场就会被雨水给淹没,无奈下约翰不得不修建水沟,而且是网络水沟,并且聪明的约翰还控制了水的流速, 本题就是让你求出最大流速,无疑要运用到求最大流了.题中m为水沟数, ...
- Drainage Ditches~网络流模板
Description Every time it rains on Farmer John's fields, a pond forms over Bessie's favorite clover ...
- poj 1273 Drainage Ditches (网络流 最大流)
网络流模板题. ============================================================================================ ...
- POJ 1273 Drainage Ditches (网络流Dinic模板)
Description Every time it rains on Farmer John's fields, a pond forms over Bessie's favorite clover ...
- NYOJ 323 Drainage Ditches 网络流 FF 练手
Drainage Ditches 时间限制:1000 ms | 内存限制:65535 KB 难度:4 描述 Every time it rains on Farmer John's fields, ...
- Drainage Ditches--hdu1532(网络流 模板)
http://acm.hdu.edu.cn/showproblem.php?pid=1532 Drainage Ditches Time Limit: 2000/1000 MS (Java/Other ...
- [POJ1273][USACO4.2]Drainage Ditches (网络流最大流)
题意 网络流最大流模板 思路 EK也不会超时 所以说是一个数据比较水的模板题 但是POJ有点坑,多组数据,而且题目没给 哭得我AC率直掉 代码 用的朴素Dinic #include<cstdio ...
- HDU1532 Drainage Ditches 网络流EK算法
Drainage Ditches Problem Description Every time it rains on Farmer John's fields, a pond forms over ...
随机推荐
- [tarjan] hdu 3836 Equivalent Sets
主题链接: http://acm.hdu.edu.cn/showproblem.php? pid=3836 Equivalent Sets Time Limit: 12000/4000 MS (Jav ...
- android 首开机会在数据链接图标的状态栏打开并自行消失主动
请找到该文件ConnectivityService.java (alps\frameworks\base\services\java\com\android\server) 在connectivit ...
- 读书笔记—CLR via C#章节8-10
前言 这本书这几年零零散散读过两三遍了,作为经典书籍,应该重复读反复读,既然我现在开始写博了,我也准备把以前觉得经典的好书重读细读一遍,并且将笔记整理到博客中,好记性不如烂笔头,同时也在写的过程中也可 ...
- 自己动手实现Expression翻译器 – Part I
伴随.Net3.5到来的Expression,围绕着它产生了各种各样有趣的技术与应用,Linq to object.Linq to sql.Linq to sqllite.Linq to Anythi ...
- wcf事务(随记)
----------------------------------------------------wcf事务:1.ACID:原子性.一致性.隔离性.持久性:2.事务:添加命名空间(using S ...
- [转]Android与电脑局域网共享之:Samba Server
大家都有这样的经历,通过我的电脑或网上邻居访问另一台计算机上的共享资源,虽然电脑和手机之间可以有多种数据传输方式,但通过Windows SMB方式进行共享估计使用的人并不是太多,下面我就简单介绍一下, ...
- Yeoman入门之安装及环境配置
Yeoman入门之安装及环境配置 http://blog.csdn.net/panlingfan/article/details/27345037 http://www.nodejs.orgYEOMA ...
- 定制你自己的jQuery
如何定制你自己的jQuery jQuery随着版本的不断升级代码量也随之增加,从1.0.0的不到两千行到现在的1.10.2已经突破1万行. 新的API不断增加,但有些在项目中并没有用到.jQuery团 ...
- 何为分类,UIImageView举例
终于开始自己这个“聚水成洋”的路程了. 经过近一年的iOS学习和开发,遇到很多困难,一开始的陌生和畏惧,中途的困惑和纠结,解决问题后的豁然开朗和总结提升,自己就在这样一个不断的循环中逐渐成长起来了. ...
- 使用 HttpClient 进行连接
对于System.Net.Http的学习(二)——使用 HttpClient 进行连接 对于System.Net.Http的学习(一)——System.Net.Http 简介 使用 HttpCl ...