HDOJ 题目1532 Drainage Ditches(最大流)
2015-02-05 22:38
288 查看
Drainage Ditches
Time Limit: 2000/1000 MS (Java/Others) Memory Limit: 65536/32768 K (Java/Others)Total Submission(s): 10289 Accepted Submission(s): 4893
[align=left]Problem Description[/align]
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.
[align=left]Input[/align]
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.
[align=left]Output[/align]
For each case, output a single integer, the maximum rate at which water may emptied from the pond.
[align=left]Sample Input[/align]
5 4 1 2 40 1 4 20 2 4 20 2 3 30 3 4 10
[align=left]Sample Output[/align]
50
[align=left]Source[/align]
USACO 93
[align=left]Recommend[/align]
lwg | We have carefully selected several similar problems for you: 1533 3338 1569 3572 3416
题目大意:给你n个边和m个点,然后n行,每行给出边的起点和终点和容量,问m点最大流
ac代码
#include<stdio.h> #include<string.h> #include<queue> #include<iostream> #include<string> #define INF 0xfffffff using namespace std; int map[220][220],flow[220][220]; int ff(int s,int t) { queue<int>q; memset(flow,0,sizeof(flow)); int ans=0,u,v; int min_flow[220],pre[220]; while(1) { memset(min_flow,0,sizeof(min_flow)); min_flow[s]=INF; q.push(s); while(!q.empty()) { u=q.front(); q.pop(); for(v=1;v<=t;v++) { if(!min_flow[v]&&map[u][v]>flow[u][v]) { pre[v]=u; q.push(v); if(min_flow[u]>map[u][v]-flow[u][v]) { min_flow[v]=map[u][v]-flow[u][v]; } else min_flow[v]=min_flow[u]; } } } if(min_flow[t]==0) return ans; for(v=t;v!=s;v=pre[v]) { flow[pre[v]][v]+=min_flow[t]; flow[v][pre[v]]-=min_flow[t]; } ans+=min_flow[t]; } } int main() { int n,m; while(scanf("%d%d",&n,&m)!=EOF) { int i; memset(map,0,sizeof(map)); for(i=0;i<n;i++) { int a,b,c; scanf("%d%d%d",&a,&b,&c); map[a][b]+=c; } printf("%d\n",ff(1,m)); } }
相关文章推荐
- hdoj 3061 Battle 【最小割 之 最大权闭合图】 【入门题目】
- 最大流(Dinic模版)——HDOJ 1532
- HDOJ 题目3549 Flow Problem(最大流)
- HDOJ 题目1754 I Hate It(树状数组,单点更新,求区间最大值)
- HDOJ 题目2189 Swap(二分图最大匹配,输出路径)
- hdoj 4322 Candy 【最大费用最大流】【经典题目】【最大流时 维护费用的最大效益】
- HDOJ 题目1864 最大报销额(01背包)
- HDOJ 题目3415 Max Sum of Max-K-sub-sequence(单调队列求区间和最大值)
- 最大网络流dinic算法—【hdoj1532】Drainage Ditches
- 最大流poj1273,hdoj1532
- HDOj 题目1179 Ollivanders: Makers of Fine Wands since 382 BC.(二分图最大匹配)
- HDOJ 题目1864 最大报销额 (贪心)
- HDOJ题目1231最大连续子序列(动态规划)
- HDOJ 题目4010 Query on The Trees(Link Cut Tree连接,删边,路径点权加,路径点权最大值)
- HDOJ题目3829Cat VS Dog(二分图,最大独立集)
- hdoj 1532 Drainage Ditches 【最大流---裸题】
- HDOJ 题目1024 Max Sum Plus Plus(动态规划,不想交子段最大和)
- HDOJ 题目2444 The Accomodation of Students(染色法判二分图,最大匹配)
- HDOJ 题目1559 最大子矩阵(dp)
- hdoj 1532 Drainage Ditches 题解(最大流)