zoukankan      html  css  js  c++  java
  • 【模板】dinic求最大流

    struct dinic{
    	struct ppo{
    		int v,c,next;
    	}e[N<<2];
    	int S,T,tot,h[N],d[N];
    	void init(){
    		S=0,T=1,tot=0;
    		memset(h,-1,sizeof(h));
    	}
    	void ae(int u,int v,int c){
    		e[tot]=ppo{v,c,h[u]};
    		h[u]=tot++;
    	}
    	void add(int u,int v,int c){
    		ae(u,v,c);
    		ae(v,u,0);
    	}
    	bool bfs(){
    		memset(d,-1,sizeof(d));
    		queue<int>q;
    		q.push(S);
    		d[S]=0;
    		while(!q.empty()){
    			int u=q.front();q.pop();
    			for(int i=h[u];~i;i=e[i].next){
    				int x=e[i].v,w=e[i].c;
    				if(d[x]==-1&&w){
    					d[x]=d[u]+1;
    					q.push(x);
    				}
    			}
    		}
    		return (d[T]!=-1);
    	}
    	int dfs(int u,int flow){
    		if(u==T) return flow;
    		int res=0;
    		for(int i=h[u];~i;i=e[i].next){
    			int x=e[i].v;
    			if(e[i].c&&d[u]+1==d[x]){
    				int tmp=dfs(x,min(flow,e[i].c));
    				flow-=tmp;
    				e[i].c-=tmp;
    				e[i^1].c+=tmp;
    				res+=tmp;
    				if(flow==0) break;
    			}
    		}
    		if(res==0) d[u]=-1;
    		return res;
    	}
    	int solve(){
    		int res=0;
    		while(bfs()){
    			res+=dfs(S,inf);
    		}
    		return res;
    	}
    }dick;
    
  • 相关阅读:
    mysql
    mysql
    mysql
    mysql
    mysql
    mysql
    mysql
    mysql
    mysql
    为你的react项目添加路由
  • 原文地址:https://www.cnblogs.com/xyq0220/p/13441796.html
Copyright © 2011-2022 走看看