http://poj.org/problem?id=1273

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

EK算法:
#include <iostream>
#include <stdio.h>
#include <string.h>
#include <stdlib.h>
#include <algorithm>
#include <queue>
#define inf 0x3f3f3f3f
using namespace std;
int map[][],n,m,v[],pre[];
int bfs(int s,int t)
{
queue<int>q;
q.push(s);
memset(pre,-,sizeof(pre));
memset(v,,sizeof(v));
pre[s]=s;
v[s]=;
while(!q.empty())
{
int w=q.front();
q.pop();
for(int i=; i<=n; i++)
{
if(map[w][i]&&!v[i])
{
pre[i]=w;
v[i]=;
if(i==t)
{
return ;
}
q.push(i);
}
}
}
return ;
}
void EK(int s,int t)
{
int ans=,minx;
while(bfs(s,t)==)
{
minx=inf;
for(int i=t; i!=s; i=pre[i])
{
minx=min(minx,map[pre[i]][i]);
}
for(int i=t; i!=s; i=pre[i])
{
map[pre[i]][i]-=minx;
map[i][pre[i]]+=minx;
}
ans+=minx;
}
printf("%d\n",ans);
return ;
}
int main()
{
int xx,yy,zz;
while(scanf("%d%d",&m,&n)!=EOF)
{
memset(map,,sizeof(map));
while(m--)
{
scanf("%d%d%d",&xx,&yy,&zz);
map[xx][yy]+=zz;
}
EK(,n);
}
return ;
}

dinic算法:

#include <iostream>
#include <stdio.h>
#include <string.h>
#include <stdlib.h>
#include <algorithm>
#include <queue>
#define inf 0x3f3f3f3f
using namespace std;
int map[][],dis[];
int m,n;
int bfs(int s,int t)
{
memset(dis,-,sizeof(dis));
dis[s]=;
queue<int>q;
q.push(s);
while(!q.empty())
{
int y=q.front();
q.pop();
for(int i=; i<=n; i++)
{
if(dis[i]==-&&map[y][i])
{
dis[i]=dis[y]+;
q.push(i);
}
}
}
if(dis[t]>) return ;
return ;
}
int dinic(int s,int maxt)
{
if(s==n) return maxt;
int a,sum=maxt;
for(int i=; i<=n&&sum; i++)
{
if(dis[i]==dis[s]+&&map[s][i]>)
{
a=dinic(i,min(sum,map[s][i]));
map[s][i]-=a;
map[i][s]+=a;
sum-=a;
}
}
return maxt-sum;
}
int main()
{
int x,y,z,ans;
while(scanf("%d%d",&m,&n)!=EOF)
{
ans=;
memset(map,,sizeof(map));
while(m--)
{
scanf("%d%d%d",&x,&y,&z);
map[x][y]+=z;
}
while(bfs(,n)==)
{
ans+=dinic(,inf);
}
printf("%d\n",ans);
}
return ;
}

POJ1273:Drainage Ditches(最大流入门 EK,dinic算法)的更多相关文章

  1. POJ-1273 Drainage Ditches 最大流Dinic

    Drainage Ditches Time Limit: 1000MS Memory Limit: 10000K Total Submissions: 65146 Accepted: 25112 De ...

  2. poj 1273 Drainage Ditches 最大流入门题

    题目链接:http://poj.org/problem?id=1273 Every time it rains on Farmer John's fields, a pond forms over B ...

  3. poj-1273 Drainage Ditches(最大流基础题)

    题目链接: Drainage Ditches Time Limit: 1000MS   Memory Limit: 10000K Total Submissions: 67475   Accepted ...

  4. poj1273 Drainage Ditches (最大流板子

    网络流一直没学,来学一波网络流. https://vjudge.net/problem/POJ-1273 题意:给定点数,边数,源点,汇点,每条边容量,求最大流. 解法:EK或dinic. EK:每次 ...

  5. [poj1273]Drainage Ditches(最大流)

    解题关键:最大流裸题 #include<cstdio> #include<cstring> #include<algorithm> #include<cstd ...

  6. poj1273 Drainage Ditches Dinic最大流

    Drainage Ditches Time Limit: 1000MS   Memory Limit: 10000K Total Submissions: 76000   Accepted: 2953 ...

  7. Poj 1273 Drainage Ditches(最大流 Edmonds-Karp )

    题目链接:poj1273 Drainage Ditches 呜呜,今天自学网络流,看了EK算法,学的晕晕的,留个简单模板题来作纪念... #include<cstdio> #include ...

  8. POJ 1273 - Drainage Ditches - [最大流模板题] - [EK算法模板][Dinic算法模板 - 邻接表型]

    题目链接:http://poj.org/problem?id=1273 Time Limit: 1000MS Memory Limit: 10000K Description Every time i ...

  9. 2018.07.06 POJ1273 Drainage Ditches(最大流)

    Drainage Ditches Time Limit: 1000MS Memory Limit: 10000K Description Every time it rains on Farmer J ...

随机推荐

  1. 使用Dreamweaver开发php

    1.新建站点,开发的目录 2.服务器,服务器的目录   (并修改为“测试”) 3.必须结合WANP5

  2. html5引擎开发 -- 引擎消息中心和有限状态机 - 初步整理 一

    一 什么是有限状态机        FSM (finite-state machine),又称有限状态自动机,简称状态机,是表示有限个状态以及在这些状态之间的转移和动作等行为的数学模型.他对于逻辑以及 ...

  3. sublime text 2 破解

    本文是介绍sublime text 2.0.2 build 2221 64位 的破解 在你使用sublime时可能经常出现下图: 这是在提醒你注册 在工具栏上点击help->Enter Lice ...

  4. 制作SD卡启动自己编译的uboot.bin

    README for FriendlyARM Tiny4412 -----------------------------------------------------1. Build uboot ...

  5. opencascade读取iges并用vtk离散的一些问题

    近期抽时间在弄iges文件内容读取的工作.然后将其离散化在vtk中能够显示处理以及兴许的一些工作.主要目的是识别CAD文件导出的模型,然后进行离散处理.方便兴许的处理.离散工作比較简单.opencas ...

  6. mysql 小数处理

    1)四舍五入,保留小数 使用ROUND函数(注意不要使用FORMAT函数,FORMAT函数返回值带有逗号,赋值时会出现错误) 示例:保留两位小数 ROUND(price,2) 2)向上取整 CEIL ...

  7. MySQL性能优化(十)-- 主从复制(一主多从)

    环境准备: Linux1(matser) Linux2(slave) Linux3(slave) 搭建 1.先清空原来的master和slave配置 reset master; 2.

  8. Tomcat服务器的搭建

    一.Tomcat服务器端口的配置 Tomcat的所有配置都放在conf文件夹之中,里面的server.xml文件是配置的核心文件. 如果想修改Tomcat服务器的启动端口,则可以在server.xml ...

  9. CSS美化自己的完美网页

    CSS美化自己的完美网页   CSS概述 css样式: css是英文Cascading Style Sheets的缩写,称为层叠样式表,用于对页面进行美化,CSS的可以使页面更加的美观.基本上所有的h ...

  10. 谷歌Volley网络框架讲解——第一篇

    自从公司新招了几个android工程师后,我清闲了些许.于是就可以有时间写写博客,研究一些没来的研究的东西. 今年的谷歌IO大会上,谷歌推出了自己的网络框架——Volley.不久前就听说了但是没有cl ...