zoukankan      html  css  js  c++  java
  • hdu 1532 EK模板

    我再网上摘的

    #include <iostream>
    #include <cstdio>
    #include <cstring>
    #include <queue>
    using namespace std;
    #define N 300
    int m;
    int Visited[N];
    int Prev[N];
    int G[N][N];
    
    unsigned EKmin()
    {
        deque<int> q;
        memset(Visited,0,sizeof(Visited));
        memset(Prev,0,sizeof(Prev));
        Prev[1]=0;
        Visited[1]=1;
        q.push_back(1);
        bool bFindPath=false;
        while(!q.empty()) {
            int u=q.front();
            q.pop_front();
            for(int i=1;i<=m;i++) {
                if(G[u][i]>0&&!Visited[i]) {
                    Prev[i]=u;
                    Visited[i]=1;
                    if(i==m) {
                        bFindPath=true;
                        q.clear();
                        break;
                    }
                    else q.push_back(i);
                }
            }
        }
        if(!bFindPath) return 0;
        int i=m;
        unsigned nMinFlow=999999999;
        while(Prev[i]) {
            if(nMinFlow>G[Prev[i]][i]) nMinFlow=G[Prev[i]][i];
            i=Prev[i];
        }
        i=m;
        while(Prev[i]) {
            G[Prev[i]][i]-=nMinFlow;
            G[i][Prev[i]]+=nMinFlow;
            i=Prev[i];
        }
        return nMinFlow;
    }
    
    int main()
    {
        int n,i,u,v,val;
        while(scanf("%d%d",&n,&m)!=EOF) {
            memset(G,0,sizeof(G));
            for(i=0;i<n;i++) {
                scanf("%d %d %d",&u,&v,&val);
                G[u][v]+=val;
            }
            unsigned nMinFlow=0;
            unsigned aug;
            while(aug=EKmin()) nMinFlow+=aug;
            printf("%d\n",nMinFlow);
    
        }
        return 0;
    }
    

      

  • 相关阅读:
    要学习TINY框架要有什么前提条件?
    如何获取最新的代码?
    python 反射的用法
    面试题1
    Process多进程的创建方法
    异常捕捉
    用type动态创建Form
    ModelForm的使用
    git 常见命令
    TVTK库的安装
  • 原文地址:https://www.cnblogs.com/jackes/p/2439518.html
Copyright © 2011-2022 走看看