zoukankan      html  css  js  c++  java
  • 网络流模板

    #include<bits/stdc++.h>
    using namespace std;
    #define M 10001
    #define inf 1000000
    int ip=1,head[M],lv[M];
    int s,T;
    struct E{
        int to,next,cap;
    }e[M*10];
    void add(int x,int y,int z){
        e[++ip].to=y;e[ip].next=head[x];e[ip].cap=z;head[x]=ip;
        e[++ip].to=x;e[ip].next=head[y];e[ip].cap=0;head[y]=ip;
    }
    bool bfs(){
        memset(lv,-1,sizeof(lv));
        queue<int> q;
        q.push(s);
        lv[s]=0;
        while(!q.empty()){
            int t=q.front();
            q.pop();
            for(int i=head[t];i;i=e[i].next){
                if(lv[e[i].to]==-1&&e[i].cap){
                    lv[e[i].to]=lv[t]+1;
                    q.push(e[i].to);
                }
            }
        }
        return lv[T]!=-1;
    }
     
    int dfs(int u,int f){
        if(u==T||f==0)return f;
        int ret=0;
        for(int i=head[u];i;i=e[i].next){
            if(lv[e[i].to]==lv[u]+1&&e[i].cap){
                int w=dfs(e[i].to,min(f,e[i].cap));
                e[i].cap-=w;
                e[i^1].cap+=w;
                f-=w;
                ret+=w;
            }
        }
        if(!ret)lv[u]=-1;
        return ret;
    }
    int dinic(){
         
        int ans=0;
        while(bfs()){
            ans+=dfs(s,inf);
            //cout<<ans<<endl;
        }
        return ans;
    }
  • 相关阅读:
    批量管理服务器,批量分发文件
    IIS最大连接数优化
    在CentOS 7中安装与配置JDK8
    可扩展流程设计工具方案
    An internal erroroccurred during: "Removing compiler problem markers...".java.lang.String
    .NET和java之争实没必要
    提高生产率的VS插件
    Java Synchronized关键字
    Flex拖动实现方法
    WF3.0和4.0区别介绍
  • 原文地址:https://www.cnblogs.com/Amphetamine/p/7103541.html
Copyright © 2011-2022 走看看