QOJ.ac
QOJ
ID | Problem | Submitter | Result | Time | Memory | Language | File size | Submit time | Judge time |
---|---|---|---|---|---|---|---|---|---|
#896617 | #2429. Conquer The World | Estelle_N | AC ✓ | 1552ms | 130804kb | C++14 | 2.0kb | 2025-02-13 13:51:11 | 2025-02-13 13:51:13 |
Judging History
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