zoukankan      html  css  js  c++  java
  • 网络最大流——HDU

    题目链接

    模板题练练手

    题目代码

    #include<stdio.h>
    #include<string.h>
    #include<queue>
    using namespace std;
    typedef long long LL;
    const int N=207;
    const int INF=0x3f3f3f3f;
    int head[N],deep[N];
    LL maxflow;
    int n,m,tot,si,ei,ci;
    struct edge{
        int to,next;
        LL dis;
    }e[N*2];
    void add(int u,int v,LL w){
        e[tot].to=v;
        e[tot].dis=w;
        e[tot].next=head[u];
        head[u]=tot++;
    }
    bool Bfs(int s,int t){
        memset(deep,0,sizeof(deep));
        queue<int>q;
        deep[s]=1;
        q.push(1);
        while(!q.empty()){
            int u=q.front();q.pop();
            for(int i=head[u];i!=-1;i=e[i].next){
                int v=e[i].to;
                if(!deep[v]&&e[i].dis){
                    deep[v]=deep[u]+1;
                    q.push(v);
                }
            }
        }return deep[t];
    }
    LL Dfs(int u,int t,LL dis){
        if(u==t||!dis)return dis;
        LL sum=0;
        for(int i=head[u];i!=-1;i=e[i].next){
            int v=e[i].to;
            if(deep[v]==deep[u]+1&&e[i].dis){
                LL temp=Dfs(v,t,min(dis,e[i].dis));
                if(temp){
                    sum+=temp;
                    dis-=temp;
                    e[i].dis-=temp;
                    e[i^1].dis+=temp;
                    if(!dis)break;
                }
            }
        }return sum;
    }
    void Dinic(int s,int t){
        while(Bfs(s,t)){
            maxflow+=Dfs(s,t,INF);
        }
    }
    void init(){
        memset(head,-1,sizeof(head));
        tot=maxflow=0;
    }
    int main(){
        while(~scanf("%d%d",&n,&m)){
            init();
            for(int i=1;i<=n;i++){
                scanf("%d%d%d",&si,&ei,&ci);
                add(si,ei,ci),add(ei,si,0);
            }
            Dinic(1,m);
            printf("%lld
    ",maxflow);
        }
        return 0;
    }

    要建反向边,记得结构数大小乘二哦

  • 相关阅读:
    table问题
    生成跟相应qq聊天
    查数组 indexOf()用法
    Ajax请求数据的两种方式
    Ajax面试题
    内部类及静态内部类的实例化
    为什么在开发中大部分的时候都在用session而Application基本上都不去使用?
    Java序列化与反序列化
    Java反射机制
    Java中线程同步的方法
  • 原文地址:https://www.cnblogs.com/helman/p/11295882.html
Copyright © 2011-2022 走看看