• POJ 1273 Drainage Ditches


    题意:从池塘1-m有n条水渠,求出最大流量

    题解:经典最大流问题,使用最短增广路算法Edmonds Karp,每次通过bfs寻找増广路径,最坏时间复杂度为O(n*m^2),n是点数 m是边数。

     1 #include <cstdio>
     2 #include <cstring>
     3 #include <queue>
     4 using namespace std;
     5 
     6 const int inf=0x3f3f3f3f;
     7 int g[310][310],pre[310],vis[310];
     8 int n,m;
     9 int edmonds_karp()
    10 {
    11     int v;
    12     deque<int> q;
    13     memset(pre,0,sizeof(pre));
    14     memset(vis,0,sizeof(vis));
    15     vis[1]=1;
    16     q.push_back(1);
    17     bool find=0;
    18     while(!q.empty())
    19     {
    20         v=q.front();
    21         q.pop_front();
    22         for(int i=1;i<=m;i++)
    23         {
    24             if(g[v][i]>0&&vis[i]==0)
    25             {
    26                 pre[i]=v;
    27                 vis[i]=1;
    28                 if(i==m)
    29                 {
    30                     find=1;
    31                     q.clear();
    32                     break;
    33                 }
    34                 else 
    35                     q.push_back(i);
    36             }
    37         }
    38     }
    39     if(!find)
    40         return 0;
    41     int minf=inf;
    42     v=m;
    43     while(pre[v])
    44     {
    45         minf=min(minf,g[pre[v]][v]);
    46         v=pre[v];
    47     }
    48     v=m;
    49     while(pre[v])
    50     {
    51         g[pre[v]][v]-=minf;
    52         g[v][pre[v]]+=minf;
    53         v=pre[v];
    54     }
    55     return minf;
    56 }
    57 int main()
    58 {
    59     while(~scanf("%d%d",&n,&m))
    60     {
    61         int s,e,c;
    62         memset(g,0,sizeof(g));
    63         for(int i=0;i<n;i++)
    64         {
    65             scanf("%d%d%d",&s,&e,&c);
    66             g[s][e]+=c;
    67         }
    68         int maxf=0;
    69         int aug;
    70         while(aug=edmonds_karp())
    71             maxf+=aug;
    72         printf("%d
    ",maxf);
    73     }
    74 }
  • 相关阅读:
    从零到一k8s(五)网络模型讲解(cilium,calico,flannel)
    从零到一k8s(六)集群管理深入
    从零到一k8s(九)devops&&cicd
    1kvm理论
    类和方法
    方法定义和调用
    2kvm安装
    Redis6.2.6源码CLion编译调试
    ubuntu16.04 nginx创建自签名SSL证书
    MySQL性能优化之参数配置
  • 原文地址:https://www.cnblogs.com/kearon/p/7674634.html
Copyright © 2020-2023  润新知