zoukankan      html  css  js  c++  java
  • 洛谷 P3128 [USACO15DEC]最大流Max Flow

    题意简述

    给定一颗树,每次操作可以使两个点最短路上的点+1,求最大的点

    题解思路

    树上差分

    若操作u, v,则++f[u], ++f[v], --f[lca(u, v)], --f[father(lca(u, v))];

    代码

    #include <cstdio>
    #include <algorithm>
    #define REG(i, u, op) for (register int i = h[u][op]; i; i = e[i][op].nxt)
    struct Edge
    {
        int to, nxt;
    }e[300000][2];
    int n, k, u, v, ans;
    int cnt[2], h[100000][2];
    int f[100000], fa[100000], ff[100000];
    inline void add_edge(const int& u, const int& v, const bool& op)
    {
        e[++cnt[op]][op].to = v;
        e[cnt[op]][op].nxt = h[u][op];
        h[u][op] = cnt[op];
    }
    int find(const int& x) {return fa[x] ^ x ? fa[x] = find(fa[x]) : x; }
    inline void add(const int& u, const int& v, const int& lca)
    {
        ++f[u];
        ++f[v];
        --f[lca];
        --f[ff[lca]];
    }
    void dfs1(const int& x)
    {
        fa[x] = x;
        REG(i, x, 1) if (fa[e[i][1].to])
            add(e[i][1].to, x, find(e[i][1].to));
        REG(i, x, 0) if (!fa[e[i][0].to])
        {
            ff[e[i][0].to] = x;
            dfs1(e[i][0].to);
            fa[e[i][0].to] = x;
        }
    }
    int dfs2(const int& x)
    {
        int s = f[x];
        REG(i, x, 0) if (e[i][0].to ^ ff[x])
            s += dfs2(e[i][0].to);
        ans = std::max(ans, s);
        return s;
    }
    int main()
    {
        scanf("%d%d", &n, &k);
        for (register int i = 1; i < n; ++i)
        {
            scanf("%d%d", &u, &v);
            add_edge(u, v, 0);
            add_edge(v, u, 0);
        }
        for (register int i = 1; i <= k; ++i)
        {
            scanf("%d%d", &u, &v);
            add_edge(u, v, 1);
            add_edge(v, u, 1);
        }
        dfs1(1);
        dfs2(1);
        printf("%d
    ", ans);
    }
    
  • 相关阅读:
    Meterpreter
    CHM木马
    浅析ARP协议及ARP攻击
    python绝技 — 使用PyGeoIP关联IP地址和物理位置
    python虚拟环境virtualenv的安装与使用
    python调用nmap探测局域网设备
    提权
    Nexpose
    docker安装使用
    一些渗透测试练习环境介绍
  • 原文地址:https://www.cnblogs.com/xuyixuan/p/9696627.html
Copyright © 2011-2022 走看看