zoukankan      html  css  js  c++  java
  • [网络流]

    先抄个模板

    EK:

     1 const int MAXN = 430;
     2 const int MAX_INT = (1 << 30);
     3  
     4 struct Edge{
     5     int v, nxt, w;
     6 };
     7  
     8 struct Node{
     9     int v, id;
    10 };
    11  
    12 int n, m, ecnt;
    13 bool vis[MAXN];
    14 int head[MAXN];
    15 Node pre[MAXN];
    16 Edge edge[MAXN];
    17  
    18 void init(){
    19     ecnt = 0;
    20     memset(edge, 0, sizeof(edge));
    21     memset(head, -1, sizeof(head));
    22 }
    23  
    24 void addEdge(int u, int v, int w){
    25     edge[ecnt].v = v;
    26     edge[ecnt].w = w;
    27     edge[ecnt].nxt = head[u];
    28     head[u] = ecnt++;
    29 }
    30  
    31 bool bfs(int s, int t){
    32     queue <int> que;
    33     memset(vis, 0, sizeof(vis));
    34     memset(pre, -1, sizeof(pre));
    35     pre[s].v = s;
    36     vis[s] = true;
    37     que.push(s);
    38     while(!que.empty()){
    39         int u = que.front();
    40         que.pop();
    41         for(int i = head[u]; i + 1; i = edge[i].nxt){
    42             int v = edge[i].v;
    43             if(!vis[v] && edge[i].w){
    44                 pre[v].v = u;
    45                 pre[v].id = i;
    46                 vis[v] = true;
    47                 if(v == t) return true;
    48                 que.push(v);
    49             }
    50         }
    51     }
    52     return false;
    53 }
    54  
    55 int EK(int s, int t){
    56     int ans = 0;
    57     while(bfs(s, t)){
    58         int mi = MAX_INT;
    59         for(int i = t; i != s; i = pre[i].v){
    60             mi = min(mi, edge[pre[i].id].w);
    61         }
    62         for(int i = t; i != s; i = pre[i].v){
    63             edge[pre[i].id].w -= mi;
    64             edge[pre[i].id ^ 1].w += mi;
    65         }
    66         ans += mi;
    67     }
    68     return ans;
    69 }
    70  
    71 // 加边
    72 addEdge(u, v, w);
    73 addEdge(v, u, 0);
    74 // 调用
    75 int ans = EK(s, t);
    View Code
  • 相关阅读:
    $(document).Ready()方法 VS OnLoad事件 VS $(window).load()方法
    ASP.NET MVC之文件上传【二】
    ASP.NET MVC之文件上传【一】
    [JSOI2009]球队收益
    Codeforces 323 B Tournament-graph
    2017 [六省联考] T6 寿司餐厅
    [CQOI2014]数三角形
    Hdoj 3506 Monkey Party
    Loj #125. 除数函数求和(2)
    Codeforces 235 E Number Challenge
  • 原文地址:https://www.cnblogs.com/Kaike/p/11167835.html
Copyright © 2011-2022 走看看