QOJ.ac

QOJ

IDProblemSubmitterResultTimeMemoryLanguageFile sizeSubmit timeJudge time
#233171#6438. CrystalflyzGoofyWA 759ms11116kbC++141.6kb2023-10-31 14:35:572023-10-31 14:35:59

Judging History

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

  • [2023-10-31 14:35:59]
  • 评测
  • 测评结果:WA
  • 用时:759ms
  • 内存:11116kb
  • [2023-10-31 14:35:57]
  • 提交

answer

#include <bits/stdc++.h>
using namespace std;




void solve() {
    int n; cin >> n;
    vector<int>edge[n + 1],a(n + 1), f(n + 1), g(n + 1), h(n + 1), t(n + 1);
    for(int i = 1; i <= n; i++) {
        cin >> a[i];
    }
    for(int i = 1; i <= n; i++) {
        cin >> t[i];
    }
    for(int i = 1; i < n; i++) {
        int u, v; cin >> u >> v;
        edge[u].push_back(v);
        edge[v].push_back(u);
    }
    function<void(int, int)>dfs = [&](int u, int fa) {
        h[u] = a[u];
        int first = -1, second = -1, mx = 0, sumg = 0;
        for(auto v : edge[u]) {
            if(v == fa) continue;
            dfs(v, u);
            sumg += g[v];
            mx = max(mx, a[v]);
            if(t[v] == 3) {
                if(a[v] > first) {
                    second = first;
                    first = a[v];
                } else {
                    second = max(second, a[v]);
                }
            }

        }
        g[u] = sumg + mx;
        h[u] += sumg;
        if(first != -1)
            for(auto v : edge[u]) {
                if(v == fa) continue;
                if(first == a[v] && t[v] == 3) {
                    if(second == -1) continue;
                    g[u] = max(g[u], h[v] + sumg + second - g[v]);
                } else {
                    g[u] = max(g[u], h[v] + sumg + first - g[v]);
                }
            }
        f[u] = g[u] + a[u];
    };
    dfs(1, 0);
    cout << f[1] << endl;
}


signed main() {
	// ios::sync_with_stdio(false);
	int tt = 1;
	cin >> tt;
	while (tt--) {
		solve();
	}
}




Details

Tip: Click on the bar to expand more detailed information

Test #1:

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

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: 0ms
memory: 3820kb

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: 279ms
memory: 3824kb

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: 258ms
memory: 3820kb

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: 604ms
memory: 11116kb

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: 759ms
memory: 11004kb

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:

-1599646120
1469957838
-1760463872
2128660823
1843938232
-1636718824
2062655782
-1303292592
-1939853281
-1775306267

result:

wrong answer 1st numbers differ - expected: '35466839477975', found: '-1599646120'