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

    #include<iostream>
    #include<cstdio>
    #include<cstring>
    #include<algorithm>
    #include<queue>
    #include<vector>
    #include<math.h>
    using namespace std;
    #define M    9499999
    int map[10002][10002];
    int vis[10003];
    int n,m,s,t;
    int dfs(int s,int t,int f)
    {
        if(s==t)    return f;
        vis[s]=1;
        for(int v=1;v<=n;v++)
        if(map[s][v]>0&&!vis[v])
        {
            int d=dfs(v,t,min(f,map[s][v]));
            if(d>0)
            {
                map[s][v]-=d;
                map[v][s]+=d;
                return d;
            }
        }
        return 0;
    }
    int maxflow(int s,int t)
    {
        int flow=0;    
        while(1){
            memset(vis,0,sizeof(vis));
            int f=dfs(s,t,M);
            if(!f)    return flow;
            flow+=f;
        }
        return flow;
    }
    int main()
    {
        scanf("%d%d%d%d",&n,&m,&s,&t);
        for(int i=1,u,v,w;i<=m;i++)
        {
            scanf("%d%d%d",&u,&v,&w);
            map[u][v]+=w;
        }
        cout<<maxflow(s,t);
        return 0;
    } 
  • 相关阅读:
    博弈论--sg函数
    博弈论--nim博弈
    dp--bitset优化
    树--欧拉序
    树--dfs序
    树--dsu on tree
    树--树的重心
    单调队列
    单调栈
    dp--背包
  • 原文地址:https://www.cnblogs.com/CLGYPYJ/p/6743592.html
Copyright © 2011-2022 走看看