• 杭电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 }
  • 相关阅读:
    删除系统盘符
    响应式设计 @media
    精通CSS 学习笔记
    兼容性
    css border-collapse
    angular.js学习 ui-router 0.2.15
    javascript的简易发布/订阅模式
    javascript 切换上下文,事件绑定中改变this指向
    SpringMVC:提交日期类型报400错误解决方法
    解决Spring Mvc中接受参数绑定重名的方法
  • 原文地址:https://www.cnblogs.com/qq188380780/p/7367822.html
Copyright © 2020-2023  润新知