链接

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相关推荐

  1. [POJ 1273]Drainage Ditches

    [问题描述] Every time it rains on Farmer John's fields, a pond forms over Bessie's favorite clover patch ...

  2. POJ - 1273 Drainage Ditches(最大流)

    题目链接:点击查看 题目大意:现在一共有n个节点,需要修建m条水渠将池塘的水引入小溪,点1代表池塘,点n代表小溪,每条水渠都有一定的排水能力,问最大的排水效率是多少 题目分析:网络流的模板题,直接套板 ...

  3. POJ 1273 Drainage Ditches 最大流

    很裸的最大流问题,不过注意会有重边,o(╯□╰)o,被阴了WA了一发 还有就是要用long long #include <cstdio> #include <cstring> ...

  4. POJ 1273 Drainage Ditches

    网络流. 题意非常easy.给出单向边,容量. 找最大流.注意重边要加起来.g[u][v].c+=c; 第一次写网络流. 也是第一个网络流的题. 看了两天,理解了之后就唰唰唰的写出来了. 大概可能是E ...

  5. POJ 1273 Dinic

    题意 传送门 POJ 1273 Drainage Ditches 题解 最大流模板题,使用 DinicDinicDinic 算法求解. #include <algorithm> #incl ...

  6. poj1273 Drainage Ditches

    蒟蒻的blog POJ 1273 Drainage Ditches Time Limit: 1000MS Memory Limit: 10000K Memory Limit: 10000K Total ...

  7. POJ - 3614 Sunscreen(贪心/二分图最大匹配-多重匹配/网络流-最大流)

    题目链接:点击查看 题目大意:给出n头奶牛,奶牛们现在要晒太阳,每头奶牛需要[l,r]区间内的光照强度,现在有m种防晒霜,每种防晒霜可以让奶牛接受到val数值的光照强度,然后每种防晒霜只有num个,现 ...

  8. USACO Section 4.2 Drainage Ditches(最大流)

    最大流问题.ISAP算法.注意可能会有重边,不过我用的数据结构支持重边.距离d我直接初始化为0,也可以用BFS逆向找一次. -------------------------------------- ...

  9. 网络流 - Drainage Ditches - HDU - 1532

    Problem Description Every time it rains on Farmer John's fields, a pond forms over Bessie's favorite ...

最新文章

  1. 脑机交互研究及标准化实践
  2. [YTU]_2640(编程题:运算符重载---矩阵求和)
  3. poi excel 隐藏标识_纳尼?Excel竟然自带项目管理模板
  4. 点击按钮测试用例标题_功能测试有哪些用例?分享功能测试用例大全
  5. 2021年中国云原生用户调查问卷
  6. 计算机位数与内存相关,弄懂电脑的各种位数、内存、存储
  7. 32 位的有符号整数_leetcode 7 整数反转
  8. 关于C++异常处理的一些思考
  9. 【拾贝】hive unoin all map数爆增
  10. KVM 管理与使用说明
  11. Apple 如何知道你使用了私有API
  12. ribbon基于接口配置超时_Spring Cloud第二篇:服务消费者RestTemplate+Ribbon
  13. 解决outlook2016 中邮件中,点击链接提示(您的组织策略阻止我们为您完成此操作)解决方案
  14. Weka的全名是怀卡托智能分析环境
  15. win7 install solution for intel SKL and BSW platform
  16. 中国市场营销的南北差异 从地域性格区别制定营销战略 (转)
  17. idea程序参数program arguments,vm arguments,Environment variable
  18. 使用MySQL可视化客户端,例如SQLyog,Navicat等,只编写SQL语句,使用2的N次方原理,快速初始化百万千万条数据
  19. 机器视觉定位入门三步走-第二步
  20. 【0基础学java】教学日志:项目实战-坦克大战-3

热门文章

  1. Android开发之ApiCloud轮播图开发
  2. mysql存储过程的返回值在哪里设置_MySQL存储过程的返回值
  3. App Store 审核指南(中文版)
  4. 个人作业Alpha项目测试
  5. java23种设计模式之五:代理模式
  6. 自动化运维之部署Puppet
  7. (效果一)js实现上拉加载
  8. 【269】蓝牙键盘连接
  9. Puppet 资源公有属性的其他描述方式(三十)
  10. synchronized,ReetrantLock与volatile(二)