zoukankan      html  css  js  c++  java
  • 最大流模板

    dinic

    码着

    #include<stdio.h>
    #include<string.h>
    #include<iostream>
    using namespace std;
    const int inf=0x7fffffff;
    const int N=100000;
    int head[N];
    int level[N];
    struct node
    {
        int v,w,next;
    }e[N*2];
    int cnt;
    int q[N];
    void add(int u,int v,int w)
    {
        e[cnt].v=v;
        e[cnt].w=w;
        e[cnt].next=head[u];
        head[u]=cnt++;
    }
    int bfs(int s,int t)
    {
        int l,r,u,v;
        l=r=0;
        memset(level,0,sizeof(level));
        q[r++]=s;
        level[s]=0;
        while(l<r)
        {
            u=q[l++];
            if(u==t)return 1;
            for(int i=head[u];i!=-1;i=e[i].next)
            {
                v=e[i].v;
                if(!level[v]&&e[i].w)
                {
                    level[v]=level[u]+1;
                    q[r++]=v;
                }
            }
        }
        return 0;
    }
    int dfs(int u,int t,int maxf)
    {
        if(u==t)return maxf;
        int ret=0,tmp,v;
        for(int i=head[u];i!=-1;i=e[i].next)
        {
            v=e[i].v;
            if(level[v]==level[u]+1 && e[i].w)
            {
                tmp=dfs(v,t,min(e[i].w,maxf-ret));
                ret+=tmp;
                e[i].w-=tmp;
                e[i^1].w+=tmp;
                if(ret==maxf)return ret;
            }
        }
        return ret;
    }
    int dinic(int s,int t)
    {
        int ans=0;
        while(bfs(s,t))ans+=dfs(s,t,inf);
        return ans;
    }
    int main()
    {
        int n,m,u,v,w;
        while(~scanf("%d%d",&m,&n))
        {
            memset(head,-1,sizeof(head));
            cnt=0;
            for(int i=0;i<n;i++)
            {
                scanf("%d%d%d",&u,&v,&w);
                add(u,v,w);
                add(v,u,0);
            }
            int ans=dinic(1,n);
            cout<<ans<<endl;
        }
        return 0;
    }
    View Code
  • 相关阅读:
    Xamarin Layout属性(转)
    Oracle基础
    tableViewNestTableView(tableView嵌套collectionView)
    抓包工具Fiddler的使用教程(五): 修改response的数据 .
    Web调试利器fiddler
    SQLServer光标
    SQLServer触发器
    web端功能测试总结(一)
    web功能测试
    test zlj
  • 原文地址:https://www.cnblogs.com/Kong-Ruo/p/7718888.html
Copyright © 2011-2022 走看看