POJ1237 Drainage Ditches (网络流)

原创 2018年04月15日 16:09:12

题意分析

农夫John有N个池塘一次编号为1到N,在这些池塘之间有M条单向的水渠,每一条有一个最大的通水速度。每一个池子里有一个调节器,可以设定池子里的水分别通过哪些水渠流多少到别的池子。现在要求从编号为1的水池向编号为N的水池进行输水,最大的通水速度是多少。

最大流 FF居然没有卡。

代码总览

#include<cstdio>
#include<algorithm>
#include<queue>
#include<bitset>
#include<cstring>
using namespace std;
const int nmax = 205;
int tt,kase = 1,n,m,s = 1,t,ans;
int mp[nmax][nmax], pre[nmax];
bitset<nmax> visit;
bool findpath() {
    visit.reset();
    memset (pre,0,sizeof pre);
    queue<int> q; q.push(s); visit.set(s); pre[s] = s;
    while(!q.empty()) {
        int cur = q.front(); q.pop();
        if(cur == t) return true;
        for(int i = 1;i<=n;++i) {
            if(!visit.test(i) && mp[cur][i]) {
                visit.set(i);
                pre[i] = cur;
                q.push(i);
            }
        }
    }
    return false;
}
void max_flow(){
    while(true){
        if(!findpath()) return;
        int minx = 0x3f3f3f3f;
        for(int i = t;i != s; i = pre[i]) minx = min(minx,mp[pre[i]][i]);
        for(int i = t;i != s; i = pre[i]){
            mp[pre[i]][i] -= minx;
            mp[i][pre[i]] += minx;
        }
        ans += minx;
    }
}
int main(){
    while(scanf("%d %d",&m,&n) !=EOF) {
        memset(mp,0,sizeof mp);
        t = n; ans = 0;
        int a,b,c;
        for(int i = 0;i<m;++i){
            scanf("%d %d %d",&a,&b,&c);
            mp[a][b] += c;
        }
        max_flow();
        printf("%d\n",ans);
    }
    return 0;
}
版权声明:本文为博主原创文章,未经博主允许不得转载。 https://blog.csdn.net/pengwill97/article/details/79950159

hdu1532——Drainage Ditches(网络流模板)

Problem Description Every time it rains on Farmer John’s fields, a pond forms over Bessie’s favorit...
  • blue_skyrim
  • blue_skyrim
  • 2016-05-06 20:14:52
  • 939

【网络流】HDU 1532 Drainage Ditches(最大流Ford-Fulkersson)+HDU 3549 Flow Problem(最大流Dinic算法)

hduoj1532 Drainage Ditches Time Limit: 2000/1000 MS (Java/Others)    Memory Limit: 65536/32768 K (...
  • Gengman
  • Gengman
  • 2017-02-24 12:54:37
  • 414

hdoj 1532 Drainage Ditches 题解(最大流)

Drainage Ditches Time Limit: 2000/1000 MS (Java/Others)    Memory Limit: 65536/32768 K (Java/Others...
  • y990041769
  • y990041769
  • 2014-03-27 11:27:18
  • 6307

poj-1273-Drainage Ditches(最大流问题)

传送门经典的最大流问题,不明白的可以在网上找找相关博客看看 Edmonds Karp算法的模板题#include #include #include #include #include #...
  • qq_21120027
  • qq_21120027
  • 2016-04-03 19:46:04
  • 605

最大流学习 hdu1532 Drainage Ditches 最大流 bfs

首先贴上原文地址: [最大流问题]kuangbin已经讲的很清楚了,在阅读代码的期间我再做些补充 下面是原文和我的笔记: 最近又复习了下最大流问题,每次看这部分的内容都会有新的收获。可以说最大流...
  • kyoma
  • kyoma
  • 2016-10-13 22:56:31
  • 283

poj_1273_Drainage Ditches

Drainage Ditches Time Limit: 1000MS        Memory Limit: 10000K Total Submissions: 67110        Acce...
  • huangshuai147
  • huangshuai147
  • 2016-04-18 10:03:17
  • 470

POJ-1273 Drainage Ditches(最大流)

Drainage Ditches Time Limit: 1000MS   Memory Limit: 10000K Total Submissions: 71209 ...
  • qq_31759205
  • qq_31759205
  • 2016-10-27 17:33:29
  • 400

HDU 1532 Drainage Ditches【最大流入门题, EdmondKarp算法】

最大流入门题。参考资料:http://blog.csdn.net/hurmishine/article/details/53037362 用了数组和Vector建图,对于初学者来说,先看懂数组建图的,...
  • hurmishine
  • hurmishine
  • 2016-11-04 17:58:07
  • 694

hdu 1532 Drainage Ditches(EK算法)

输入m n, m是边数,n是点数。 接下来m行: 起点,终点,最大流量。 求以 1 为源点, n为汇点的最大流。 裸的最大流算法 #include #include #i...
  • Ezereal
  • Ezereal
  • 2016-03-17 20:04:30
  • 295

USACO Drainage Ditches解题报告

这道题是典型的max flow问题,也是我第一次实现max flow。感觉bi
  • thestoryofsnow
  • thestoryofsnow
  • 2014-07-25 04:50:24
  • 406
收藏助手
不良信息举报
您举报文章:POJ1237 Drainage Ditches (网络流)
举报原因:
原因补充:

(最多只允许输入30个字)