QOJ.ac

QOJ

IDProblemSubmitterResultTimeMemoryLanguageFile sizeSubmit timeJudge time
#896617#2429. Conquer The WorldEstelle_NAC ✓1552ms130804kbC++142.0kb2025-02-13 13:51:112025-02-13 13:51:13

Judging History

This is the latest submission verdict.

  • [2025-02-13 13:51:13]
  • Judged
  • Verdict: AC
  • Time: 1552ms
  • Memory: 130804kb
  • [2025-02-13 13:51:11]
  • Submitted

answer

#include <vector>
#include <cstdio>
#include <algorithm>

#define int long long

using namespace std;

const int N = 2000005;

int n, ans, cnt, num, a[250005], b[250005], f[N], rt[250005 << 1], ls[N], rs[N], val[N], dis[N], dep[250005];

vector < pair <int, int> > e[250005];

int merge(int x, int y)
{
    if(!x || !y)
        return x + y;
    if(val[x] > val[y])
        swap(x, y);
    rs[x] = merge(rs[x], y);
    f[ls[x]] = f[rs[x]] = f[x];
    if(dis[ls[x]] < dis[rs[x]])
        swap(ls[x], rs[x]);
    dis[x] = dis[rs[x]] + 1;
    return x;
}

void del(int &x)
{
    f[ls[x]] = ls[x], f[rs[x]] = rs[x];
    x = merge(ls[x], rs[x]);
}

void dfs(int u, int fa)
{
    if(a[u] < b[u])
        for(int i = 1; i <= b[u] - a[u]; ++ i)
            val[++ cnt] = dep[u] - 1e12, rt[u] = merge(rt[u], f[cnt] = cnt), ++ num;
    if(a[u] > b[u])
        for(int i = 1; i <= a[u] - b[u]; ++ i)
            val[++ cnt] = dep[u], rt[u + n] = merge(rt[u + n], f[cnt] = cnt);
    for(auto [v, w] : e[u])
    {
        if(v == fa)
            continue;
        dep[v] = dep[u] + w;
        dfs(v, u);
        rt[u] = merge(rt[u], rt[v]);
        rt[u + n] = merge(rt[u + n], rt[v + n]);
    }
    while(rt[u] && rt[u + n] && val[rt[u]] + val[rt[u + n]] - 2 * dep[u] < 0)
    {
        int x = rt[u], y = rt[u + n], A = val[x], B = val[y];
        ans += A + B - 2 * dep[u];
        del(rt[u]), del(rt[u + n]);
        val[x] = 2 * dep[u] - B, ls[x] = rs[x] = 0;
        val[y] = 2 * dep[u] - A, ls[y] = rs[y] = 0;
        rt[u] = merge(rt[u], f[x] = x);
        rt[u + n] = merge(rt[u + n], f[y] = y);
    }
}

signed main()
{
    scanf("%lld", &n);
    for(int i = 1, u, v, w; i < n; ++ i)
    {
        scanf("%lld%lld%lld", &u, &v, &w);
        e[u].push_back({v, w});
        e[v].push_back({u, w});
    }
    for(int i = 1; i <= n; ++ i)
        scanf("%lld%lld", &a[i], &b[i]);

    dfs(1, 0);

    printf("%lld\n", ans + num * 1000000000000);

    return 0;
}

Details

Test #1:

score: 100
Accepted
time: 3ms
memory: 17844kb

Test #2:

score: 0
Accepted
time: 0ms
memory: 17832kb

Test #3:

score: 0
Accepted
time: 1ms
memory: 18824kb

Test #4:

score: 0
Accepted
time: 1ms
memory: 19188kb

Test #5:

score: 0
Accepted
time: 0ms
memory: 19048kb

Test #6:

score: 0
Accepted
time: 1ms
memory: 19460kb

Test #7:

score: 0
Accepted
time: 1ms
memory: 18316kb

Test #8:

score: 0
Accepted
time: 2ms
memory: 20948kb

Test #9:

score: 0
Accepted
time: 28ms
memory: 38240kb

Test #10:

score: 0
Accepted
time: 66ms
memory: 43768kb

Test #11:

score: 0
Accepted
time: 82ms
memory: 57208kb

Test #12:

score: 0
Accepted
time: 1ms
memory: 18744kb

Test #13:

score: 0
Accepted
time: 1ms
memory: 18364kb

Test #14:

score: 0
Accepted
time: 3ms
memory: 19548kb

Test #15:

score: 0
Accepted
time: 1ms
memory: 18364kb

Test #16:

score: 0
Accepted
time: 0ms
memory: 19176kb

Test #17:

score: 0
Accepted
time: 3ms
memory: 18696kb

Test #18:

score: 0
Accepted
time: 4ms
memory: 22512kb

Test #19:

score: 0
Accepted
time: 11ms
memory: 28160kb

Test #20:

score: 0
Accepted
time: 114ms
memory: 74012kb

Test #21:

score: 0
Accepted
time: 84ms
memory: 34476kb

Test #22:

score: 0
Accepted
time: 87ms
memory: 34240kb

Test #23:

score: 0
Accepted
time: 100ms
memory: 36412kb

Test #24:

score: 0
Accepted
time: 51ms
memory: 28728kb

Test #25:

score: 0
Accepted
time: 57ms
memory: 31804kb

Test #26:

score: 0
Accepted
time: 95ms
memory: 36888kb

Test #27:

score: 0
Accepted
time: 92ms
memory: 62252kb

Test #28:

score: 0
Accepted
time: 110ms
memory: 48924kb

Test #29:

score: 0
Accepted
time: 145ms
memory: 78304kb

Test #30:

score: 0
Accepted
time: 266ms
memory: 106664kb

Test #31:

score: 0
Accepted
time: 196ms
memory: 86292kb

Test #32:

score: 0
Accepted
time: 153ms
memory: 82112kb

Test #33:

score: 0
Accepted
time: 172ms
memory: 80752kb

Test #34:

score: 0
Accepted
time: 518ms
memory: 91968kb

Test #35:

score: 0
Accepted
time: 198ms
memory: 72324kb

Test #36:

score: 0
Accepted
time: 254ms
memory: 79788kb

Test #37:

score: 0
Accepted
time: 300ms
memory: 108924kb

Test #38:

score: 0
Accepted
time: 422ms
memory: 130112kb

Test #39:

score: 0
Accepted
time: 404ms
memory: 123408kb

Test #40:

score: 0
Accepted
time: 383ms
memory: 86004kb

Test #41:

score: 0
Accepted
time: 296ms
memory: 95100kb

Test #42:

score: 0
Accepted
time: 229ms
memory: 84632kb

Test #43:

score: 0
Accepted
time: 239ms
memory: 85368kb

Test #44:

score: 0
Accepted
time: 272ms
memory: 91844kb

Test #45:

score: 0
Accepted
time: 319ms
memory: 101708kb

Test #46:

score: 0
Accepted
time: 0ms
memory: 15524kb

Test #47:

score: 0
Accepted
time: 75ms
memory: 52284kb

Test #48:

score: 0
Accepted
time: 0ms
memory: 14236kb

Test #49:

score: 0
Accepted
time: 145ms
memory: 75528kb

Test #50:

score: 0
Accepted
time: 101ms
memory: 34292kb

Test #51:

score: 0
Accepted
time: 1ms
memory: 18200kb

Test #52:

score: 0
Accepted
time: 2ms
memory: 18708kb

Test #53:

score: 0
Accepted
time: 0ms
memory: 17940kb

Test #54:

score: 0
Accepted
time: 1ms
memory: 18812kb

Test #55:

score: 0
Accepted
time: 0ms
memory: 18680kb

Test #56:

score: 0
Accepted
time: 0ms
memory: 19164kb

Test #57:

score: 0
Accepted
time: 1ms
memory: 19000kb

Test #58:

score: 0
Accepted
time: 4ms
memory: 18564kb

Test #59:

score: 0
Accepted
time: 64ms
memory: 35636kb

Test #60:

score: 0
Accepted
time: 95ms
memory: 52064kb

Test #61:

score: 0
Accepted
time: 308ms
memory: 102584kb

Test #62:

score: 0
Accepted
time: 437ms
memory: 107516kb

Test #63:

score: 0
Accepted
time: 330ms
memory: 105332kb

Test #64:

score: 0
Accepted
time: 336ms
memory: 105368kb

Test #65:

score: 0
Accepted
time: 967ms
memory: 108540kb

Test #66:

score: 0
Accepted
time: 946ms
memory: 107040kb

Test #67:

score: 0
Accepted
time: 1552ms
memory: 117500kb

Test #68:

score: 0
Accepted
time: 1008ms
memory: 129612kb

Test #69:

score: 0
Accepted
time: 391ms
memory: 130804kb

Test #70:

score: 0
Accepted
time: 394ms
memory: 130228kb