zoukankan      html  css  js  c++  java
  • hdu 3549 最大流(EK实现)

    Problem: http://acm.hdu.edu.cn/showproblem.php?pid=3549

    题目都直接说求最大流了,还需要做什么

    数据这么弱,直接套最大流模版

    #include<cstdio>
    #include<cstring>
    #include<queue>
    #include<algorithm>
    using namespace std;
    #define MAXN 16
    int map[MAXN][MAXN],n,m,ans,pre[MAXN];//map[][]邻接矩阵存图,pre[]前驱数组 
    bool EK_BFS(int start,int end){//宽搜寻增广路 
        queue<int> que;
        bool flag[MAXN];//标记点是否被选入队列 
        memset(flag,false,sizeof(flag));
        memset(pre,-1,sizeof(pre));//初始化前驱数组 
        que.push(start);
        flag[start]=true;
        while(!que.empty()){
            int e=que.front();
            if(e==end)return true;//当队头弹出的点为终点时 表示寻到增广路 
            que.pop();
            for(int i=1;i<=n;i++){
                if(map[e][i] && !flag[i]){
                    flag[i]=true;
                    pre[i]=e;
                    que.push(i);
                }
            }
        }
        return false;
    }
    void work(){//EK_max_flow
        ans=0;//初始化最大流 
        while(EK_BFS(1,n)){
            int Minf=1010;
            int u=n;
            while(pre[u]!=-1){
                Minf=min(Minf,map[pre[u]][u]);//寻找瓶颈边 
                u=pre[u];
            }
            ans+=Minf;
            u=n;
            while(pre[u]!=-1){//修改路径上的边流量 
                map[pre[u]][u]-=Minf;
                map[u][pre[u]]+=Minf;
                u=pre[u];
            }
        }
    }
    void init(){
        scanf("%d%d",&n,&m);
        memset(map,0,sizeof(map));
        int x,y,c;
        for(int i=0;i<m;i++){
            scanf("%d%d%d",&x,&y,&c);
            map[x][y]+=c;//可能有重边 
        }
    }
    int main(){
        int t;
        scanf("%d",&t);
        for(int i=1;i<=t;i++){
            init();
            work();
            printf("Case %d: %d
    ",i,ans);
        }
    }
    View Code

    相关知识传送门:http://www.cnblogs.com/kuangbin/archive/2011/07/26/2117636.html

    还不够...百度谷歌告诉你
    图论网络流什么的,太赞了.....真的很好玩(很好玩的哟,你也要来玩吗?)

  • 相关阅读:
    开开心心
    HOW HE/SHE'S SEEN
    天池
    sql server deadlock跟踪的四种方法
    reduce 好东西
    object方法
    页面横向滚动 联动 进度条
    浅拷贝、深拷贝
    图片下载
    axios简单封装
  • 原文地址:https://www.cnblogs.com/cshhr/p/3550007.html
Copyright © 2011-2022 走看看