草地排水
来源:互联网 发布:linux 最小安装 编辑:程序博客网 时间:2024/04/20 12:07
描述
在农夫约翰的农场上,每逢下雨,贝茜最喜欢的三叶草地就积聚了一潭水。这意味着草地被水淹没了,并且小草要继续生长还要花相当长一段时间。因此,农夫约翰修建了一套排水系统来使贝茜的草地免除被大水淹没的烦恼(不用担心,雨水会流向附近的一条小溪)。作为一名一流的技师,农夫约翰已经在每条排水沟的一端安上了控制器,这样他可以控制流入排水沟的水流量。
农夫约翰知道每一条排水沟每分钟可以流过的水量,和排水系统的准确布局(起点为水潭而终点为小溪的一张网)。需要注意的是,有些时候从一处到另一处不只有一条排水沟。
根据这些信息,计算从水潭排水到小溪的最大流量。对于给出的每条排水沟,雨水只能沿着一个方向流动,注意可能会出现雨水环形流动的情形。
输入
第1行: 两个用空格分开的整数N (0 <= N <= 200) 和 M (2 <= M <= 200)。N是农夫约翰已经挖好的排水沟的数量,M是排水沟交叉点的数量。交点1是水潭,交点M是小溪。
第二行到第N+1行: 每行有三个整数,Si, Ei, 和 Ci。Si 和 Ei (1 <= Si, Ei <= M) 指明排水沟两端的交点,雨水从Si 流向Ei。Ci (0 <= Ci <= 10,000,000)是这条排水沟的最大容量。
输出
输出一个整数,即排水的最大流量。
样例输入
1 2 40
1 4 20
2 4 20
2 3 30
3 4 10
样例输出
题目来源
#include <iostream>
#include <queue>
#include <cstring>
#include <cstdio>
using namespace std;
const int maxn = 1000;
struct info { int w, f; }edge[maxn][maxn];
bool flag[maxn];
int d[maxn];
int n, m;
bool bfs( )
{
memset( flag,0,sizeof(flag) );
flag[1] = true; d[1] = 0;
queue<int> q;
q.push( 1 );
while( !q.empty() )
{
int u = q.front(); q.pop();
for( int v=1; v<=n; v++ )
{
if( !flag[v]&&edge[u][v].w>edge[u][v].f )
{
d[v] = d[u]+1;
flag[v] = 1;
q.push( v );
if( flag[n]==1 ) return 1;
}
}
}
return 0;
}
int dfs( int v, int flow )
{
if( v==n ) return flow;
int a, i;
for( i=1; i<=n; i++ )
{
if( edge[v][i].w>edge[v][i].f&&d[i]==d[v]+1 )
{
if( a=dfs(i,min(flow,edge[v][i].w-edge[v][i].f)) )
{
edge[v][i].f += a;
edge[i][v].f -= a;
return a;
}
}
}
return 0;
}
int main( )
{
int u, v, w;
while( scanf( "%d%d", &m, &n ) != EOF ) {
memset( edge, 0, sizeof(edge) );
for( int i=1; i<=m; i++ ) {
scanf( "%d%d%d",&u,&v,&w );
edge[u][v].w += w;
}
int ans = 0;
int r;
while( bfs() )
{
while( r=dfs(1,1<<30) ) ans += r;
}
cout << ans << endl;
}
return 0;
}
写的不好,如果各位有好的建议请留言
- 草地排水
- 【Drainage Ditches 草地排水】
- 【wikioi1993】草地排水
- 【wikioi1993】 草地排水
- codevs1993 草地排水
- USACO草地排水
- code vs 草地排水
- [codevs 1993]草地排水
- Codevs 1993 草地排水
- codevs 1993草地排水
- Codevs1993草地排水
- 问题 A: 草地排水
- 【CODEVS1993】【网络流】草地排水
- USACO 草地排水 网络流
- 【codevs1993】草地排水(isap)
- [POJ1273]草地排水 dinic模板
- 草地排水_codevs1993_网络流
- 网络流(草地排水)
- Linux 开发工具及编程工具
- Codeforce 65D - Harry Potter and the Sorting Hat(DP+hash+set)
- oracle学习之路--数据库实例、方案、用户、表空间、表对象之间的关系
- Firebug入门指南
- ASP.NET MVC3 路由系统
- 草地排水
- Linux下设置默认帐号等
- javascript 操作 cookie 【转】
- 控件SideBar的使用方法总结
- ZOJ 1037 Gridland
- ADT(抽象数据类型)
- PHP正则分组替换
- 广告的布尔检索
- static——静态方法