zoukankan      html  css  js  c++  java
  • [USACO4.2]Drainage Ditches

    练习网络流的好题目,这里给出的是Dinic

     1 #include<bits/stdc++.h>
     2 using namespace std;
     3 const int N=250;
     4 int n,m;
     5 struct Dinic{
     6     int G[N][N],dis[N];
     7     void build(){
     8         memset(G,0,sizeof G);
     9         for(int i=1;i<=m;++i){
    10             int u,v,f;
    11             scanf("%d%d%d",&u,&v,&f);
    12             G[u][v]+=f;
    13         }
    14     }
    15     bool BFS(){
    16         queue<int> Q;
    17         memset(dis,-1,sizeof dis);
    18         dis[1]=0;
    19         Q.push(1);
    20         while(!Q.empty()){
    21             int u=Q.front();Q.pop();
    22             if(u==n)return 1;
    23             for(int i=1;i<=n;++i){
    24                 if(~dis[i]||G[u][i]<=0)continue;
    25                 dis[i]=dis[u]+1;
    26                 Q.push(i);
    27             }
    28         }
    29         return 0;
    30     }
    31     int dfs(int u,int low){
    32         int a=0;
    33         if(u==n)return low;
    34         for(int i=1;i<=n;++i)
    35             if(G[u][i]>0&&dis[i]==dis[u]+1){
    36                 a=dfs(i,min(low,G[u][i]));
    37                 G[u][i]-=a;
    38                 G[i][u]+=a;
    39                 if(a)return a;
    40             }
    41         return 0;
    42     }
    43     int dinic(){
    44         int ans=0,t;
    45         while(BFS())
    46             while(t=dfs(1,0x3f3f3f3f))ans+=t;
    47         return ans;
    48     }
    49 }D;
    50 int main(){
    51     while(~scanf("%d%d",&m,&n)){
    52         D.build();
    53         printf("%d
    ",D.dinic());
    54     }
    55     return 0;
    56 }
  • 相关阅读:
    UIScrollView(滚动视图)
    NSJSONSerialization(json序列化)
    手势(UIGestureRecognizer)
    mac常用命令
    ios设备相关
    UITextField
    cocos2d学习笔记
    NSTimer(定时器)
    git命令
    Java 线程的终止-interrupt
  • 原文地址:https://www.cnblogs.com/ndqzhang1111/p/7173076.html
Copyright © 2011-2022 走看看