zoukankan      html  css  js  c++  java
  • 不知道如何归类的模板

    网络流

      最大流

    struct Edge {
        int u, v, c, f, nxt;
    } e[maxm << 1];
    int G[maxn], edges;
    void init() { memset(G, -1, sizeof G); edges = 0; }
    void adde(int u, int v, int c) {
        e[edges++] = (Edge){u, v, c, 0, G[u]};
        G[u] = edges-1;
        e[edges++] = (Edge){v, u, 0, 0, G[v]};
        G[v] = edges-1;
    }
    int dis[maxn];
    bool bfs(int s, int t) {
        memset(dis, -1, sizeof dis);
        static int Q[maxn], l, r;
        for (l = r = 0, dis[Q[r++] = s] = 0; l < r; ) {
            int u = Q[l++];
            for (int i = G[u], v; ~i; i = e[i].nxt)
                if (v = e[i].v, e[i].f < e[i].c && dis[v] == -1)
                    dis[Q[r++] = v] = dis[u]+1;
        }
        return ~dis[t];
    }
    int cur[maxn];
    int dfs(int u, int t, int a) {
        if (u == t || !a) return a;
        int flow = 0, f;
        for (int &i = cur[u], v; ~i; i = e[i].nxt)
            if (v = e[i].v, dis[v] == dis[u]+1 && (f = dfs(v, t, std::min(e[i].c-e[i].f, a)))) {
                flow += f; e[i].f += f;
                e[i^1].f -= f; a -= f;
                if (!a) break;
            }
        return flow;
    }
    int maxflow(int s, int t) {
        int flow = 0;
        while (bfs(s, t)) {
            rep(i, 1, n) cur[i] = G[i];
            flow += dfs(s, t, inf);
        }
        return flow;
    }
    
  • 相关阅读:
    词法分析
    关于编译原理
    词法分析
    编译原理
    对编译原理的一些看法
    spring整合struts2
    spring整合javaWeb
    spring整合hibernate
    spring-transaction事务
    spring-jdbc
  • 原文地址:https://www.cnblogs.com/ac-evil/p/13091565.html
Copyright © 2011-2022 走看看