hdu 1532 FordFullkerson模板 0是原点 m是汇点 最大网络流

#include<iostream>
#include <cstdio>
#include <string.h>
using namespace std;
int n,m;
int c[201][201];
int maxflow(int s,int t)
{
    int p,q,queue[201],u,v,pre[201];
    int flow,aug;
    flow=0;
    while(true)
    {
        memset(pre,-1,sizeof(pre));
        for(queue[p=q=0]=s;p<=q;p++)
        {
            u=queue[p];
        
        for(v=0;v<n&&pre[t]<0;v++)
            if(c[u][v]>0&&pre[v]<0)
                pre[v]=u,queue[++q]=v;
            if(pre[t]>=0)
                break;
        }
    
    if(pre[t]<0)
        break;
    aug=0x7fff;
    for(u=pre[v=t];v!=s;v=u,u=pre[u])
        if(c[u][v]<aug)
            aug=c[u][v];
        for(u=pre[v=t];v!=s;v=u,u=pre[u])
            c[u][v]-=aug,c[v][u]+=aug;
        flow+=aug;
    }
    return flow;
}
int main()
{
    int s,e,ca;
    while(scanf("%d%d",&m,&n)!=EOF)
    {
        memset(c,0,sizeof(c));
        for(int i=0;i<m;i++)
        {
            scanf("%d%d%d",&s,&e,&ca);
            c[s-1][e-1]+=ca;
        }
        printf("%d\n",maxflow(0,n-1));
    }
    return 0;
}

  

原文地址:https://www.cnblogs.com/jackes/p/2439885.html