QOJ.ac
QOJ
ID | Problem | Submitter | Result | Time | Memory | Language | File size | Submit time | Judge time |
---|---|---|---|---|---|---|---|---|---|
#662125 | #6438. Crystalfly | zyq_313 | WA | 240ms | 11620kb | C++14 | 1.4kb | 2024-10-20 21:15:15 | 2024-10-20 21:15:17 |
Judging History
answer
#include <bits/stdc++.h>
using namespace std;
#define endl '\n'
#define pii pair<int, int>
#define i64 long long
const int N = 1e5 + 10;
int n, k;
vector<int> g[N];
int dp[N];
int t[N], a[N];
int sum[N];
void dfs(int u, int fa){
int max_v = 0;
for (auto v : g[u]){
if (v == fa) continue;
dfs(v, u);
sum[u] += dp[v];
max_v = max(max_v, a[v]);
}
dp[u] = sum[u] + max_v;
if (g[u].size() <= 1) return ;
pii m[2];
for (auto v : g[u]){
if (v == fa) continue;
int x = a[v] + sum[v] - dp[v];
if (x > m[0].first){
swap(m[0], m[1]); m[0] = make_pair(x, v);
}else if (x > m[1].first){
m[1] = make_pair(x, v);
}
}
for (auto v : g[u]){
if (v == fa) continue;
if (t[v] == 3){
if (v != m[0].second){
dp[u] = max(dp[u], a[v] + sum[u] + m[0].first);
}else{
dp[u] = max(dp[u], a[v] + sum[u] + m[1].first);
}
}
}
}
void solve(){
cin >> n;
for (int i = 1; i <= n; i ++) cin >> a[i], g[i].clear();
for (int i = 1; i <= n; i ++) cin >> t[i];
for (int i = 1; i < n; i ++){
int u, v; cin >> u >> v;
g[u].push_back(v); g[v].push_back(u);
}
for (int i = 1; i <= n; i ++) dp[i] = 0, sum[i] = 0;
dfs(1, 0);
// for (int i = 1; i <= n; i ++) cout << dp[i] << endl;
cout << dp[1] + a[1] << endl;
}
int main(){
ios::sync_with_stdio(0), cin.tie(0), cout.tie(0);
int t = 1;
cin >> t;
while (t --) solve();
}
Details
Tip: Click on the bar to expand more detailed information
Test #1:
score: 100
Accepted
time: 0ms
memory: 7560kb
input:
2 5 1 10 100 1000 10000 1 2 1 1 1 1 2 1 3 2 4 2 5 5 1 10 100 1000 10000 1 3 1 1 1 1 2 1 3 2 4 2 5
output:
10101 10111
result:
ok 2 number(s): "10101 10111"
Test #2:
score: 0
Accepted
time: 1ms
memory: 6004kb
input:
10 6 8 1 1 5 8 9 2 1 2 2 2 2 1 2 2 3 2 4 1 5 2 6 6 6 4 4 1 3 6 2 1 3 3 3 3 1 2 1 3 3 4 4 5 5 6 6 10 5 1 8 5 1 1 3 1 2 2 2 1 2 2 3 2 4 2 5 3 6 10 6 8 8 9 6 9 5 6 6 4 2 1 3 3 2 2 2 2 3 1 1 2 1 3 3 4 4 5 5 6 4 7 2 8 7 9 9 10 7 10 9 1 5 7 5 4 1 1 1 2 1 3 2 1 2 1 3 3 4 3 5 5 6 1 7 5 7 1 1 4 2 3 1 3 2 2 1...
output:
25 24 24 56 31 14 16 28 19 19
result:
ok 10 numbers
Test #3:
score: 0
Accepted
time: 73ms
memory: 6040kb
input:
100000 10 9 1 7 9 5 1 10 5 3 8 2 1 1 3 1 2 2 3 3 1 1 2 2 3 3 4 1 5 2 6 2 7 6 8 7 9 7 10 3 6 6 1 2 1 2 1 2 1 3 10 6 5 3 7 1 5 1 9 7 3 3 1 3 3 1 3 2 2 2 3 1 2 1 3 3 4 4 5 2 6 6 7 4 8 7 9 1 10 7 2 8 9 7 7 9 10 2 3 2 2 3 2 1 1 2 2 3 1 4 3 5 4 6 3 7 1 8 1 1 4 2 7 9 9 9 8 4 2 7 3 1 2 1 1 1 1 1 2 2 3 2 4 3...
output:
49 12 41 45 8 4 38 22 20 21 5 19 23 44 26 5 21 28 28 32 36 15 5 26 38 36 20 35 27 36 20 9 32 32 22 11 41 15 20 54 38 20 45 36 20 29 24 4 37 44 30 45 17 17 36 29 3 6 24 44 25 28 50 13 5 1 44 27 17 21 15 17 17 24 29 39 10 39 38 26 22 24 9 17 41 7 28 33 51 18 14 14 7 35 23 13 11 43 30 24 35 2 43 33 17 ...
result:
ok 100000 numbers
Test #4:
score: 0
Accepted
time: 74ms
memory: 6104kb
input:
1000 420 4 7 10 4 6 9 7 9 3 5 3 10 7 2 8 4 4 7 9 4 3 7 1 10 1 5 4 5 3 9 6 4 2 8 7 1 1 10 2 2 2 4 2 1 3 2 4 8 2 1 6 3 2 5 4 9 9 9 5 9 5 2 2 5 4 2 10 9 1 10 7 4 8 4 10 10 6 2 10 2 3 2 6 2 3 3 2 9 8 5 3 1 6 3 4 5 6 1 7 6 10 7 7 8 2 6 10 10 9 8 6 2 9 7 7 10 4 5 9 2 10 9 9 10 1 5 1 6 1 1 4 8 2 5 7 7 4 10...
output:
1633 2047 3251 576 3701 2231 700 2254 105 1518 3179 914 1396 2417 2019 3397 3013 3659 443 2773 3354 110 3445 888 2380 1525 2881 1841 1969 810 752 1026 1794 3273 3021 2011 3307 3832 95 51 3731 1374 2842 1675 1960 1118 431 2199 2747 3882 1305 971 1490 3028 908 73 2376 1341 1821 3565 721 3195 2388 266 ...
result:
ok 1000 numbers
Test #5:
score: 0
Accepted
time: 222ms
memory: 11620kb
input:
10 99991 10 6 5 5 7 1 4 5 2 3 9 5 4 9 2 10 8 3 6 9 4 4 4 2 10 8 8 4 8 5 10 6 8 9 2 5 6 10 9 8 2 1 2 6 9 10 7 1 8 1 8 3 5 3 9 8 2 8 1 3 7 3 5 3 1 10 8 1 3 10 6 7 5 3 10 6 10 6 5 5 2 5 1 8 4 4 8 6 8 7 4 1 3 1 10 2 3 5 2 6 10 4 1 6 1 10 5 4 2 8 8 6 9 6 5 8 10 8 2 4 8 2 2 7 9 5 7 8 9 2 9 10 3 9 1 9 6 7 ...
output:
385673 385638 385999 385351 383937 385702 384372 386280 385985 383976
result:
ok 10 numbers
Test #6:
score: -100
Wrong Answer
time: 240ms
memory: 11620kb
input:
10 100000 691638189 376118101 486584606 394669567 486373897 939526687 503807724 278251188 231412672 45682405 745048495 28500413 156838889 12700279 797455152 755903587 326532893 701805548 78389204 486114025 367059077 361684203 829984938 129623201 460608105 143355017 412267713 65576852 778434431 93425...
output:
58555009 2064579353 884610453 1871127186 -1896013895 43675034 12267455 -274324119 -1632560856 -1685928046
result:
wrong answer 1st numbers differ - expected: '35466839477975', found: '58555009'