zoukankan      html  css  js  c++  java
  • poj1273(EK模版)

     1 //poj 1273
     2 #include <iostream>
     3 #include <cstdio>
     4 #include <cstring>
     5 #include <queue>
     6 
     7 using namespace std;
     8 #define MAXN 202
     9 #define inf 0x7ffffff
    10 #define Min(x,y) (x>y?y:x)
    11 int n;//顶点数
    12 int flow[MAXN][MAXN];//残量网络
    13 int maxflow;//最大流
    14 int st,en;//源点,汇点
    15 int a[MAXN];//a[v]表示s-v的最小残量
    16 int cap[MAXN][MAXN];//容量限制
    17 int pre[MAXN];//记录父亲
    18 
    19 int EK()
    20 {
    21     queue<int>q;
    22     memset(flow,0,sizeof(flow));//初始时残量网络为0
    23     maxflow=0;
    24     while(1)
    25     {
    26         memset(a,0,sizeof(a));
    27         a[st]=inf;
    28         q.push(st);
    29         while(!q.empty())
    30         {
    31             int u=q.front();q.pop();
    32             for(int v=1;v<=n;v++)
    33                 if(!a[v] && cap[u][v]>flow[u][v])//找到新节点v
    34                 {
    35                     pre[v]=u;q.push(v);
    36                     a[v]=Min(a[u],cap[u][v]-flow[u][v]);
    37                 }
    38         }
    39         if(a[en]==0) break;//找不到,则当前流已经是最大
    40         for(int u=en;u!=st;u=pre[u])//从汇点往回走
    41         {
    42             flow[pre[u]][u]+=a[en];
    43             flow[u][pre[u]]-=a[en];
    44         }
    45         maxflow+=a[en];
    46     }
    47     return maxflow;
    48 }
    49 
    50 int main()
    51 {
    52     int m;
    53     while(~scanf("%d%d",&m,&n))
    54     {
    55         memset(cap,0,sizeof(cap));
    56         int u,v,c;
    57         while(m--)
    58         {
    59             scanf("%d%d%d",&u,&v,&c);
    60             cap[u][v]+=c;
    61         }
    62         st=1;
    63         en=n;
    64         printf("%d\n",EK());
    65     }
    66     return 0;
    67 }
  • 相关阅读:
    howtoautomateyouriphoneappbuildswithhudson
    buildingiphoneappswithhudsonpart2
    Linux常用命令全集
    介绍
    Linux文件查找命令find,xargs详述
    Tomcat for Mac OS
    Jenkins在Mac平台安裝
    Linux下的shell与make
    buildingiosappsforovertheairadhocdistribution
    linux下u盘的使用
  • 原文地址:https://www.cnblogs.com/Missa/p/2734642.html
Copyright © 2011-2022 走看看