网络流--最大流--POJ 1273 Drainage Ditches
链接
Description
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.
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.
Input
The input includes several cases. For each case, the first line contains 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. Each of the following 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.
Output
For each case, output a single integer, the maximum rate at which water may emptied from the pond.
Sample Input
5 4
1 2 40
1 4 20
2 4 20
2 3 30
3 4 10
Sample Output
50
模板题,题意很明了,直接测板子。
#include<cstdio>
#include<cstring>
#include<queue>
#define INF 1e9
using namespace std;
const int maxn=200+5;struct Edge
{int from,to,cap,flow;Edge() {}Edge(int f,int t,int c,int flow):from(f),to(t),cap(c),flow(flow) {}
};struct Dinic
{int n,m,s,t;vector<Edge> edges;vector<int> G[maxn];bool vis[maxn];int cur[maxn];int d[maxn];void init(int n,int s,int t){this->n=n, this->s=s, this->t=t;edges.clear();for(int i=1; i<=n; i++)G[i].clear();}void AddEdge(int from,int to,int cap){edges.push_back(Edge(from,to,cap,0));edges.push_back(Edge(to,from,0,0));m = edges.size();G[from].push_back(m-2);G[to].push_back(m-1);}bool BFS(){memset(vis,0,sizeof(vis));queue<int> Q;d[s]=0;Q.push(s);vis[s]=true;while(!Q.empty()){int x=Q.front();Q.pop();for(int i=0; i<G[x].size(); i++){Edge& e=edges[G[x][i]];if(!vis[e.to] && e.cap>e.flow){vis[e.to]=true;Q.push(e.to);d[e.to]= 1+d[x];}}}return vis[t];}int DFS(int x,int a){if(x==t || a==0)return a;int flow=0,f;for(int& i=cur[x]; i<G[x].size(); i++){Edge& e=edges[G[x][i]];if(d[x]+1==d[e.to] && (f=DFS(e.to,min(a,e.cap-e.flow) ))>0 ){e.flow+=f;edges[G[x][i]^1].flow -=f;flow+=f;a-=f;if(a==0)break;}}return flow;}int Maxflow(){int flow=0;while(BFS()){memset(cur,0,sizeof(cur));flow += DFS(s,INF);}return flow;}
} DC;int main()
{int n,m,t;while(scanf("%d%d",&m,&n)==2){DC.init(n,1,n);while(m--){int u,v,w;scanf("%d%d%d",&u,&v,&w);DC.AddEdge(u,v,w);}printf("%d\n",DC.Maxflow());}return 0;
}
网络流--最大流--POJ 1273 Drainage Ditches相关推荐
- [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 ...
- POJ 1273 Dinic
题意 传送门 POJ 1273 Drainage Ditches 题解 最大流模板题,使用 DinicDinicDinic 算法求解. #include <algorithm> #incl ...
- poj1273 Drainage Ditches
蒟蒻的blog POJ 1273 Drainage Ditches Time Limit: 1000MS Memory Limit: 10000K Memory Limit: 10000K Total ...
- POJ - 3614 Sunscreen(贪心/二分图最大匹配-多重匹配/网络流-最大流)
题目链接:点击查看 题目大意:给出n头奶牛,奶牛们现在要晒太阳,每头奶牛需要[l,r]区间内的光照强度,现在有m种防晒霜,每种防晒霜可以让奶牛接受到val数值的光照强度,然后每种防晒霜只有num个,现 ...
- USACO Section 4.2 Drainage Ditches(最大流)
最大流问题.ISAP算法.注意可能会有重边,不过我用的数据结构支持重边.距离d我直接初始化为0,也可以用BFS逆向找一次. -------------------------------------- ...
- 网络流 - Drainage Ditches - HDU - 1532
Problem Description Every time it rains on Farmer John's fields, a pond forms over Bessie's favorite ...
最新文章
- 脑机交互研究及标准化实践
- [YTU]_2640(编程题:运算符重载---矩阵求和)
- poi excel 隐藏标识_纳尼?Excel竟然自带项目管理模板
- 点击按钮测试用例标题_功能测试有哪些用例?分享功能测试用例大全
- 2021年中国云原生用户调查问卷
- 计算机位数与内存相关,弄懂电脑的各种位数、内存、存储
- 32 位的有符号整数_leetcode 7 整数反转
- 关于C++异常处理的一些思考
- 【拾贝】hive unoin all map数爆增
- KVM 管理与使用说明
- Apple 如何知道你使用了私有API
- ribbon基于接口配置超时_Spring Cloud第二篇:服务消费者RestTemplate+Ribbon
- 解决outlook2016 中邮件中,点击链接提示(您的组织策略阻止我们为您完成此操作)解决方案
- Weka的全名是怀卡托智能分析环境
- win7 install solution for intel SKL and BSW platform
- 中国市场营销的南北差异 从地域性格区别制定营销战略 (转)
- idea程序参数program arguments,vm arguments,Environment variable
- 使用MySQL可视化客户端,例如SQLyog,Navicat等,只编写SQL语句,使用2的N次方原理,快速初始化百万千万条数据
- 机器视觉定位入门三步走-第二步
- 【0基础学java】教学日志:项目实战-坦克大战-3