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

     1 #include<vector>
     2 #include<cstring>
     3 #include<algorithm>
     4 #define INF 0x7fffffff
     5 #define MAX_V 210
     6 
     7 using namespace std;
     8 
     9 //用于表示边的结构体
    10 struct edge
    11 {
    12     int to;    //终点
    13     int cap;   //容量
    14     int rev;   //反向边
    15 };
    16 
    17 int m,n;
    18 bool used[MAX_V];        //DFS中用到的访问标记
    19 vector<edge> G[MAX_V];   //用于保存图的邻接表,多组数据时要注意初始化
    20 
    21 //向图中增加一条从_from到_to容量为_cap的边
    22 void add_edge(int _from,int _to,int _cap)
    23 {
    24     edge temp;
    25     temp.to=_to;
    26     temp.cap=_cap;
    27     temp.rev=G[_to].size();
    28     G[_from].push_back(temp);
    29     temp.to=_from;
    30     temp.cap=0;
    31     temp.rev=G[_from].size()-1;
    32     G[_to].push_back(temp);
    33 }
    34 
    35 //通过DFS寻找增广路
    36 int dfs(int v,int t,int f)
    37 {
    38     if(v==t)
    39         return f;
    40 
    41     used[v]=true;
    42     for(int i=0;i<G[v].size();i++)
    43     {
    44         edge &e=G[v][i];
    45         if(!used[e.to]&&e.cap>0)
    46         {
    47             int d=dfs(e.to,t,min(f,e.cap));
    48             if(d>0)
    49             {
    50                 e.cap-=d;
    51                 G[e.to][e.rev].cap+=d;
    52                 return d;
    53             }
    54         }
    55     }
    56 
    57     return 0;
    58 }
    59 
    60 //求解从s到t的最大流
    61 int max_flow(int s,int t)
    62 {
    63     int flow=0;
    64     while(true)
    65     {
    66         memset(used,false,sizeof(used));
    67         int f=dfs(s,t,INF);
    68         if(f==0)
    69             return flow;
    70         flow+=f;
    71     }
    72 }
  • 相关阅读:
    UDP
    TCP
    python基础之socket编程
    单列模式
    元类
    issubclass()和isinstance()
    手持机设备公司(WINCE/ANDROID/LINUX)
    Android Hal 分析
    Android JNI 使用的数据结构JNINativeMethod详解
    MTK GPIO 一些理解
  • 原文地址:https://www.cnblogs.com/lzj-0218/p/3560153.html
Copyright © 2011-2022 走看看