zoukankan      html  css  js  c++  java
  • hdu 1532 EK模板2 0是原点m是汇点

    #include <iostream>
    #include <string.h>
    using namespace std;
     
    
    #include <queue>
    #define min(x,y) (x<y?x:y)
    const int inf = 1000000000;
    const int maxn = 210;
    int cap[maxn][maxn];
    int n,m;
    int s,t;
    int flow[maxn][maxn],d[maxn],parent[maxn],maxflow;
     
    
    void Edmonds_Karp(int s,int t,int nnum)
    {
        maxflow = 0;
        memset(flow,0,sizeof(flow));
        memset(parent,0,sizeof(parent));
        while(true)
        {
            memset(d,0,sizeof(d));
            queue<int>que;
            d[s]=inf;
            que.push(s);
            while(!que.empty())             //BFS寻找增广路
            {
                int u = que.front();
                que.pop();
                for(int v=0; v<nnum; ++v)
                {
                    if(!d[v] && cap[u][v]>flow[u][v])            //找到新结点v
                    {
                        parent[v] = u;                           //记录v的父亲,并参加FIFO队列
                        que.push(v);
                        d[v] = min(d[u],cap[u][v]-flow[u][v]);  //s-v路径上的最小残量
                    }
                }
            }
            if(0==d[t])                    //找不到,则当前流已经是最大流
                break;
            for(int u=t;u!=s;u=parent[u])  //从汇点往回走
            {
                flow[parent[u]][u]+=d[t];  //更新正向流
                flow[u][parent[u]]-=d[t];  //更新反向流
            }
            maxflow += d[t];                 //更新从s流出的总流量
        }
    }
    int main()
    {
        while(cin>>n>>m)
        {
            memset(cap,0,sizeof(cap));
            while(n--)
            {
                int temps,tempe,c;
                cin>>temps>>tempe>>c;
                cap[temps-1][tempe-1]+=c;   //处理惩罚重边
            }
            Edmonds_Karp(0,m-1,m);
            cout<<maxflow<<endl;
        }
        return 0;
    }
    

      

  • 相关阅读:
    面向对象设计大作业第二阶段:图书馆系统
    OO之接口-DAO模式代码阅读及应用
    OO设计-有理数类的设计
    DS博客作业05--查找
    DS博客作业04--图
    DS博客作业03--树
    DS博客作业02--栈和队列
    DS01——线性表
    c博客06-结构体&文件
    C语言博客作业05——指针
  • 原文地址:https://www.cnblogs.com/jackes/p/2439884.html
Copyright © 2011-2022 走看看