zoukankan      html  css  js  c++  java
  • HDU 1532 Drainage Ditches 最大流 (Edmonds_Karp)

    题目链接: http://acm.hdu.edu.cn/showproblem.php?pid=1532

    感觉题意不清楚,不知道是不是个人英语水平问题。本来还以为需要维护入度和出度来找源点和汇点呢,看讨论才知道1就是起点,m就是汇点。。好想把代码写的工程化一点。

     1 #include <stdio.h>
     2 #include <string.h>
     3 #include <queue>
     4 #include <algorithm>
     5 using namespace std;
     6 
     7 const int INF = 0x3f3f3f3f;
     8 int n, m;
     9 int cap[210][210], flow[210][210], res[210], pre[210];
    10 queue<int>que;
    11 
    12 int Edmonds_Karp()
    13 {
    14     while(!que.empty())
    15     {
    16         que.pop();
    17     }
    18     int flow_sum = 0;
    19     while(true)
    20     {
    21         memset(res, 0, sizeof(res));
    22         res[1] = INF;
    23         que.push(1);
    24         while(!que.empty())
    25         {
    26             int u = que.front();
    27             que.pop();
    28             for(int v = 1; v <= m; v++)
    29             {
    30                 if(!res[v] && cap[u][v] > flow[u][v])
    31                 {
    32                     pre[v] = u;
    33                     que.push(v);
    34                     res[v] = min(res[u], cap[u][v] - flow[u][v]);
    35                 }
    36             }
    37         }
    38         if(res[m] == 0)break;
    39         for(int u = m; u != 1; u = pre[u])
    40         {
    41             flow[pre[u]][u] += res[m];
    42             flow[u][pre[u]] -= res[m];
    43         }
    44         flow_sum += res[m];
    45     }
    46     return flow_sum;
    47 }
    48 
    49 int main()
    50 {
    51     int u, v, w;
    52     while(scanf("%d %d", &n, &m) != EOF)
    53     {
    54         memset(cap, 0, sizeof(cap));
    55         memset(flow, 0, sizeof(flow));
    56         for(int i = 0; i < n; i++)
    57         {
    58             scanf("%d %d %d", &u, &v, &w);
    59             cap[u][v] += w;
    60         }
    61         printf("%d
    ", Edmonds_Karp());
    62     }
    63     return 0;
    64 }
    View Code
  • 相关阅读:
    linux command ubuntu
    C++ project
    windows command line
    vi command
    C++ Language
    postgresql backup
    C Language
    L1-046. 整除光棍(模拟除法)
    pta 拯救007(Floyd)
    CCF 201609-4 交通规划
  • 原文地址:https://www.cnblogs.com/wolfred7464/p/3248727.html
Copyright © 2011-2022 走看看