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

    // luogu-judger-enable-o2
    #include<cstring>
    #include<cstdio>
    #include<queue>
    #define min(a,b) a<b?a:b
    #define N 10001
    #define M 100001
    using namespace std;int f,p,k,n,m,x,y,z;char c;
    int read()
    {
        f=0;p=1;
        while(c=getchar(),c<=47||c>=58) if(c=='-') p=-1;f=(f<<3)+(f<<1)+c-48;
        while(c=getchar(),c>=48&&c<=57) f=(f<<3)+(f<<1)+c-48;
        return p*f;
    }
    struct node{int next,to,w;}e[M<<1];int l[N],tot,d[N],s,t;
    void add(int u,int v,int w)
    {
        e[tot].next=l[u];e[tot].to=v;e[tot].w=w;l[u]=tot++;
        e[tot].next=l[v];e[tot].to=u;e[tot].w=0;l[v]=tot++;
        return;
    }
    bool bfs()
    {
        memset(d,-1,sizeof(d));
        queue<int>q;d[s]=0;q.push(s);
        while(q.size())
        {
            int x=q.front();q.pop();
            for(int i=l[x];i!=-1;i=e[i].next)
            {
                int y=e[i].to;
                if(e[i].w&&d[y]==-1)
                {
                    d[y]=d[x]+1;
                    q.push(y);
                    if(y==t) return true;
                }
            }
        }
        return false;
    }
    int dfs(int x,int flow)
    {
        if(x==t) return flow;
        int rest=0,k;
        for(int i=l[x];i!=-1;i=e[i].next)
        {
            int y=e[i].to;
            if(d[x]+1==d[y]&&e[i].w)
            {
                f=dfs(y,min(flow-rest,e[i].w));
                if(!f) d[y]=0;
                e[i].w-=f;rest+=f;e[i^1].w+=f;
            }
        }
        if(!rest) d[x]=0;
        return rest;
    }
    int dinic()
    {
        int r=0;
        while(bfs()) r+=dfs(s,2147483647);
        return r;
    }
    int main()
    {
        memset(l,-1,sizeof(l));//多了这一行
        n=read();m=read();s=read();t=read();
        for(int i=1;i<=m;i++) x=read(),y=read(),z=read(),add(x,y,z);
        printf("%d",dinic());
    }
    rush!
  • 相关阅读:
    hashilb的使用
    包的导入/软件开发规范/异常处理
    序列化模块/模块/包
    常见模块
    可变数据类型和不可变数据类型
    python-----运算符及while循环
    Python之字符串切片
    第一、二次实训作业
    第二次JAVA作业
    Java学习心得
  • 原文地址:https://www.cnblogs.com/LH2000/p/14719487.html
Copyright © 2011-2022 走看看