HDU 1532 最大流

Posted cgold

tags:

篇首语:本文由小常识网(cha138.com)小编为大家整理,主要介绍了HDU 1532 最大流相关的知识,希望对你有一定的参考价值。

最大流模板题

注意反向边的意义。

技术图片
#include<bits/stdc++.h>
using namespace std;
const int INF = 1e9;
const int MAXN = 301;
int ma[MAXN][MAXN],pre[MAXN];
int n,m;

int bfs(int s,int t){
    queue<int>q;
    int flow[MAXN];
    memset(flow,0,sizeof(flow));
    memset(pre,-1,sizeof(pre));
    pre[s] = 0;
    flow[s] = INF;
    q.push(s);
    while(!q.empty()){
        int u = q.front();
        q.pop();
        for(int i = 1;i <= m;i ++){
            if(ma[u][i] > 0 && pre[i] == -1){
                flow[i] = min(flow[u],ma[u][i]);
                pre[i] = u;
                q.push(i); 
            }
        }
    }
    if(pre[t] == -1) return -1;
    else return flow[t];
} 

int maxflow(int s,int t){
    int Maxflow = 0;
    while(1){
        int flow = bfs(s,t);
        if(flow == -1) break;
        int cur = t;
        while(cur != s){
            ma[pre[cur]][cur] -= flow;
            ma[cur][pre[cur]] += flow;
            cur = pre[cur];
        }
        Maxflow += flow;
    }
    return Maxflow;
}

void solve(){
    memset(ma,0,sizeof(ma));
    for(int i = 1;i <= n;i ++){
        int u,v,w;
        scanf("%d%d%d",&u,&v,&w);
        ma[u][v] += w;
    }
    printf("%d
",maxflow(1,m));
}
int main(){
    while(~scanf("%d%d",&n,&m)) solve();
    return 0;
}
View Code

 

以上是关于HDU 1532 最大流的主要内容,如果未能解决你的问题,请参考以下文章

HDU 1532 Drainage Ditches(最大流 EK算法)

hdu 1532(最大流)

HDU 1532 最大流

HDU_1532_最大流

最大流dicnic——hdu1532模板题

hdu 1532 Drainage Ditches(最大流)