zoukankan      html  css  js  c++  java
  • POJ 1273 Drainage Ditches | 最大流模板

    #include<cstdio>
    #include<algorithm>
    #include<cstring>
    #include<queue>
    #define N 250
    #define M 250
    #define INF 100000000
    using namespace std;
    int head[N],cur[N],lev[N],ecnt=1,S,T,n,m;
    queue <int> q;
    struct adj
    {
        int nxt,v,w;
    }e[2*M];
    void add(int u,int v,int w)
    {
        e[++ecnt].v=v,e[ecnt].w=w,e[ecnt].nxt=head[u],head[u]=ecnt;
        e[++ecnt].v=u,e[ecnt].w=0,e[ecnt].nxt=head[v],head[v]=ecnt;
    }
    inline int bfs()
    {
        int u,v;
        for (int i=S;i<=T;i++)
    	lev[i]=-1,cur[i]=head[i];
        q.push(S),lev[S]=0;
        while (!q.empty())
        {
    	u=q.front();
    	for (int i=head[u];i;i=e[i].nxt)
    	{
    	    if (e[i].w>0 && lev[v=e[i].v]==-1)
    		lev[v]=lev[u]+1,q.push(v);
    	}
    	q.pop();
        }
        return lev[T]!=-1;
    }
    inline int Dinic(const int &u,const int &flow)
    {
        if (u==T) return flow;
        int res=0,v,delta;
        for (int &i=cur[u];i;i=e[i].nxt)
        {
    	if (e[i].w>0 && lev[u]<lev[v=e[i].v])
    	{
    	    delta=Dinic(v,min(e[i].w,flow-res));
    	    if (delta)
    	    {
    		e[i].w-=delta;e[i^1].w+=delta;
    		res+=delta;if (res==flow) break;
    	    }
    	}
        }
        if (res!=flow) lev[u]=-1;
        return res;
    }
    inline int Maxflow()
    {
        int ans=0;
        while (bfs()) ans+=Dinic(S,INF);
        return ans;
    }
    inline void init()
    {
        memset(head,0,sizeof(head));
        ecnt=1;
    }
    int main()
    {
        while (scanf("%d%d",&n,&m)!=EOF)
        {
    	init();
    	for (int i=1,x,y,z;i<=n;i++)
    	{
    	    scanf("%d%d%d",&x,&y,&z);
    	    add(x,y,z);
    	}
    	S=1,T=m;
    	printf("%d
    ",Maxflow());
        }
        return 0;
    }
    
  • 相关阅读:
    vs2015调试慢
    阿里正式发布《Java开发手册》终极版!
    为什么听有些人讲话让人抓狂
    hibernate 映射实例 学生 课程 成绩
    hibernate 树状映射
    hibernate 一对多双向的CURD
    hibernate 多对多双向关联
    hibernate 多对多单向
    hibernate 一对多双向
    hibernate 一对多关联
  • 原文地址:https://www.cnblogs.com/mrsheep/p/7922464.html
Copyright © 2011-2022 走看看