QOJ.ac

QOJ

IDProblemSubmitterResultTimeMemoryLanguageFile sizeSubmit timeJudge time
#662125#6438. Crystalflyzyq_313WA 240ms11620kbC++141.4kb2024-10-20 21:15:152024-10-20 21:15:17

Judging History

你现在查看的是最新测评结果

  • [2024-10-20 21:15:17]
  • 评测
  • 测评结果:WA
  • 用时:240ms
  • 内存:11620kb
  • [2024-10-20 21:15:15]
  • 提交

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'