• 杭电1532----Drainage Ditches『最大流』


     1 /*
     2 网络流的最大流问题
     3 刚学习Dinic算法。模版题
     4  */
     5 #include <cstring>
     6 #include <cstdio>
     7 #include <queue>
     8 using namespace std;
     9 const int maxn = 205;
    10 const int inf = 0x3f3f3f3f;
    11 struct
    12 {
    13     int c,f;
    14 }edge[maxn][maxn];
    15 int dis[maxn];
    16 int v,e;
    17 bool bfs()
    18 {
    19     memset(dis,0,sizeof dis);
    20     queue<int> q;
    21     q.push(1);
    22     dis[1] = 1;
    23     while(!q.empty())
    24     {
    25         int u = q.front(); q.pop();
    26         for(int i = 1; i <= v; ++i)
    27             if(!dis[i] && edge[u][i].c > edge[u][i].f)
    28             {dis[i] = dis[u] + 1;q.push(i);}
    29     }
    30     return dis[v] != 0;
    31 }
    32 int dfs(int u,int c)
    33 {
    34     if(u == v) return c;
    35     int temp = c;
    36     for(int i = 1; i <= v && temp; ++i)
    37     {
    38         if(dis[i] != dis[u] + 1 || edge[u][i].c <= edge[u][i].f) continue;
    39         int t = dfs(i,min(temp,edge[u][i].c - edge[u][i].f));
    40         edge[u][i].f += t; edge[i][u].f -= t; temp -= t;
    41     }
    42     return c - temp;
    43 }
    44 int dinic()
    45 {
    46     int ans = 0;
    47     while(bfs())
    48         while(int t = dfs(1,inf))
    49             ans += t;
    50     return ans;
    51 }
    52 int main()
    53 {
    54     while(~scanf("%d%d",&e,&v))
    55     {
    56         memset(edge,0,sizeof edge);
    57         while(e--)
    58         {
    59             int x,y,z;
    60             scanf("%d%d%d",&x,&y,&z);
    61             edge[x][y].c += z;
    62         }
    63         int ans = dinic();
    64         printf("%d
    ",ans);
    65     }
    66     return 0;
    67 }
  • 相关阅读:
    网站图片轮播效果
    图片处理类
    字符串处理帮助类
    css3高级选择器
    JQuery选择器大全
    ASCII码表
    jQuery选择器大全
    OpenFileDialog无法弹出的解决方法
    socket学习目录
    ps-抠图
  • 原文地址:https://www.cnblogs.com/qq188380780/p/7367822.html
Copyright © 2020-2023  润新知