zoukankan      html  css  js  c++  java
  • 【模板】最大流之Ford-Fulkerson算法

    这个好像跟EK算法的本质差不多,不过一个dfs,一个bfs,总体看来一般用bfs会好一点。

    程序:

    #include<iostream>
    #include<cstdio>
    #include<vector> 
    #include<cstring> 
    using namespace std;
    struct edge{
      int from,to,cap,flow,nod;
    };
    vector<edge>g[20000];
    int s,t;
    bool vis[20000];
    void add(int u,int v,int w)
    {
      g[u].push_back((edge){u,v,w,0,g[v].size()});
      g[v].push_back((edge){v,u,0,0,g[u].size()-1});
    }
    int dfs(int now,int maxx)
    {
      if (now==t) return maxx;
      vis[now]=true;
      for (int i=0;i<g[now].size();i++)
      {
          edge e=g[now][i];
          if ((!vis[e.to])&&(e.cap>e.flow))
          {
             int d=dfs(e.to,min(maxx,e.cap-e.flow));
             if (d>0)
             {
               e.flow+=d;
               g[now][i]=e;
               g[e.to][e.nod].flow-=d;
             return d;    
           }
        }
      }
      return 0;
    }
    int main()
    {
      int m,a,b,c,n;
      scanf("%d%d%d%d",&n,&m,&s,&t);
      for (int i=1;i<=m;i++)
      {
          scanf("%d%d%d",&a,&b,&c);
          add(a,b,c);
      }
      int ans=0;
      for (;;)
      {
          memset(vis,0,sizeof vis);
          int sum=dfs(s,210000000);
          if (sum==0) break;
          ans+=sum;
      }
      printf("%d
    ",ans);
      return 0;
    }
  • 相关阅读:
    消除共模干扰的方法
    C#模拟键盘事件
    获取本地IP V4 出现::1
    生成ssh密钥
    苹果应用商店DNS修改加快下载速度
    模算术 modular arithmetic
    有限域和质数的幂
    rere
    test
    图信号处理进行大数据分析
  • 原文地址:https://www.cnblogs.com/2014nhc/p/6626863.html
Copyright © 2011-2022 走看看