ID | Problem | Submitter | Result | Time | Memory | Language | File size | Submit time | Judge time |
---|---|---|---|---|---|---|---|---|---|
#211864 | #3807. 随机游走 | 13270460609 | 100 | 1522ms | 53244kb | C++ | 1.2kb | 2024-10-07 18:05:11 | 2024-10-29 10:32:50 |
answer
#include <cstdio>
#include <algorithm>
using namespace std;
const int maxn = 5e5 + 5;
int n, m;
int tot, head[maxn], ver[maxn], nxt[maxn];
long long weigh[maxn], edge[maxn];
void add(int u, int v, long long w) {
ver[++tot] = v, edge[tot] = w, nxt[tot] = head[u], head[u] = tot;
}
long long W[maxn], S[maxn], T[maxn], dp[maxn];
int cnt, son[maxn];
bool cmp(const int &x, const int &y) {
return W[x] * (S[y] + T[y]) > W[y] * (S[x] + T[x]);
}
void dfs(int u) {
W[u] = weigh[u], S[u] = 0;
for (int i = head[u]; i; i = nxt[i]) {
int v = ver[i]; long long w = edge[i];
dfs(v);
T[v] = w, W[u] += W[v], S[u] += S[v] + w;
}
cnt = 0;
for (int i = head[u]; i; i = nxt[i]) son[++cnt] = ver[i];
sort(son + 1, son + cnt + 1, cmp);
long long tim = 0;
dp[u] = 0;
for (int i = 1; i <= cnt; i++) {
dp[u] += (tim + T[son[i]]) * W[son[i]] + dp[son[i]];
tim += S[son[i]] + T[son[i]];
}
return;
}
int main() {
scanf("%d", &n);
for (int v = 2, u; v <= n; v++) {
long long w; scanf("%d%lld", &u, &w);
add(u, v, w);
}
for (int i = 1; i <= n; i++) scanf("%lld", weigh + i);
dfs(1);
printf("%lld\n", dp[1]);
return 0;
}
Details
小提示:点击横条可展开更详细的信息
Test #1:
score: 10
Accepted
time: 0ms
memory: 560kb
input:
11 1 653 2 978 3 277 4 562 3 119 6 957 3 362 6 637 6 157 9 939 460 270 127 466 193 710 45 318 281 74...
output:
11506132
result:
ok single line: '11506132'
Test #2:
score: 10
Accepted
time: 14ms
memory: 4148kb
input:
50000 1 983 1 937 2 776 4 753 2 494 2 683 2 335 4 316 7 274 6 638 11 535 10 872 13 808 13 817 11 94 ...
output:
276117269146880
result:
ok single line: '276117269146880'
Test #3:
score: 10
Accepted
time: 0ms
memory: 620kb
input:
1000 1 729 1 239 1 433 1 445 1 877 1 648 1 284 1 814 1 287 1 941 1 183 1 126 1 65 1 500 1 823 1 725 ...
output:
94592611925
result:
ok single line: '94592611925'
Test #4:
score: 10
Accepted
time: 0ms
memory: 628kb
input:
1000 1 790 1 229 1 462 1 658 1 880 1 507 1 109 1 66 1 356 1 477 1 963 1 689 1 284 1 962 1 896 1 671 ...
output:
91654782236
result:
ok single line: '91654782236'
Test #5:
score: 10
Accepted
time: 194ms
memory: 53244kb
input:
500000 1 87 2 160 3 87 4 518 5 214 6 654 7 329 8 614 9 590 10 13 11 546 12 35 13 417 14 304 15 884 1...
output:
31331837945244749
result:
ok single line: '31331837945244749'
Test #6:
score: 10
Accepted
time: 287ms
memory: 29824kb
input:
500000 1 697 1 11 1 698 1 189 1 824 1 524 1 163 1 335 1 959 1 690 1 368 1 168 1 673 1 398 1 918 1 42...
output:
16263658814895739
result:
ok single line: '16263658814895739'
Test #7:
score: 10
Accepted
time: 240ms
memory: 29820kb
input:
500000 1 148 1 159 1 990 1 585 1 837 1 364 1 754 1 576 1 756 1 426 1 502 1 201 1 185 1 251 1 17 1 20...
output:
16307730758229655
result:
ok single line: '16307730758229655'
Test #8:
score: 10
Accepted
time: 232ms
memory: 30792kb
input:
500000 1 252 1 377 1 130 4 779 5 531 4 815 2 176 4 514 9 21 9 142 2 72 11 293 11 579 9 870 7 731 9 3...
output:
48685536049668
result:
ok single line: '48685536049668'
Test #9:
score: 10
Accepted
time: 331ms
memory: 30796kb
input:
500000 1 484 1 48 3 523 2 793 4 822 1 622 3 874 4 54 6 568 4 867 11 500 7 974 4 966 7 793 1 140 1 40...
output:
49118321005585
result:
ok single line: '49118321005585'
Test #10:
score: 10
Accepted
time: 224ms
memory: 30792kb
input:
500000 1 456 2 231 2 525 4 823 2 377 1 72 2 644 5 391 1 984 1 996 7 590 4 604 7 359 3 138 4 843 3 22...
output:
21539113052010528
result:
ok single line: '21539113052010528'
Extra Test:
score: 0
Extra Test Passed