CSES - APIO 2014 - Results
Submission details
Task:Beads and wires
Sender:ollpu
Submission time:2019-03-23 16:32:12 +0200
Language:C++
Status:READY
Result:100
Feedback
groupverdictscore
#1ACCEPTED13
#2ACCEPTED15
#3ACCEPTED29
#4ACCEPTED43
Test results
testverdicttimegroup
#1ACCEPTED0.02 s1, 2, 3, 4details
#2ACCEPTED0.04 s1, 2, 3, 4details
#3ACCEPTED0.03 s1, 2, 3, 4details
#4ACCEPTED0.03 s1, 2, 3, 4details
#5ACCEPTED0.03 s1, 2, 3, 4details
#6ACCEPTED0.03 s1, 2, 3, 4details
#7ACCEPTED0.02 s1, 2, 3, 4details
#8ACCEPTED0.02 s1, 2, 3, 4details
#9ACCEPTED0.03 s1, 2, 3, 4details
#10ACCEPTED0.03 s1, 2, 3, 4details
#11ACCEPTED0.03 s1, 2, 3, 4details
#12ACCEPTED0.03 s1, 2, 3, 4details
#13ACCEPTED0.02 s2, 3, 4details
#14ACCEPTED0.03 s2, 3, 4details
#15ACCEPTED0.02 s2, 3, 4details
#16ACCEPTED0.03 s2, 3, 4details
#17ACCEPTED0.02 s2, 3, 4details
#18ACCEPTED0.04 s2, 3, 4details
#19ACCEPTED0.03 s2, 3, 4details
#20ACCEPTED0.03 s2, 3, 4details
#21ACCEPTED0.02 s2, 3, 4details
#22ACCEPTED0.01 s2, 3, 4details
#23ACCEPTED0.03 s3, 4details
#24ACCEPTED0.02 s3, 4details
#25ACCEPTED0.03 s3, 4details
#26ACCEPTED0.03 s3, 4details
#27ACCEPTED0.03 s3, 4details
#28ACCEPTED0.03 s3, 4details
#29ACCEPTED0.04 s3, 4details
#30ACCEPTED0.04 s3, 4details
#31ACCEPTED0.03 s3, 4details
#32ACCEPTED0.07 s4details
#33ACCEPTED0.07 s4details
#34ACCEPTED0.06 s4details
#35ACCEPTED0.20 s4details
#36ACCEPTED0.21 s4details
#37ACCEPTED0.20 s4details
#38ACCEPTED0.15 s4details
#39ACCEPTED0.15 s4details
#40ACCEPTED0.16 s4details
#41ACCEPTED0.19 s4details

Code

#include <bits/stdc++.h>
using namespace std;
#define F first
#define S second
const int INF = 2.1e9;
vector<pair<int, int>> v[201010];
int dp[201010][2][2];
void h(int i=0, int p=-1, int w=-INF) {
  for (auto pr : v[i]) {
    if (pr.F == p) continue;
    h(pr.F, i, pr.S);
  }
  int bs = 0;
  int op = 0;
  pair<int, int> ac2[2][2] = {{{-INF, -1}, {-INF, -1}}, {{-INF, -1}, {-INF, -1}}};
  for (auto pr : v[i]) {
    if (pr.F == p) continue;
    int bav = dp[pr.F][0][0];
    bs += bav;
    op = max(op, dp[pr.F][0][1]-bav);
    for (int x : {0, 1}) {
      pair<int, int> oo {dp[pr.F][1][x]-bav, pr.F};
      if (oo > ac2[x][0]) {
        swap(ac2[x][0], ac2[x][1]);
        ac2[x][0] = oo;
      } else if (oo > ac2[x][1]) {
        ac2[x][1] = oo;
      }
    }
  }
  dp[i][0][0] = bs;
  dp[i][0][1] = bs+op;
  dp[i][1][0] = bs+w;
  dp[i][1][1] = bs+op+w;
  if (w != -INF) {
    if (ac2[0][0].F != -INF) {
      dp[i][0][0] = max(dp[i][0][0], bs+ac2[0][0].F+w);
      dp[i][0][1] = max(dp[i][0][1], bs+ac2[0][0].F+w);
    }
    if (ac2[1][0].F != -INF) {
      dp[i][0][1] = max(dp[i][0][1], bs+ac2[1][0].F+w);
    }
  }
  for (int j = 0; j < 2; ++j) {
    for (int x : {0, 1}) {
      for (int k = 0; k < 2; ++k) {
        if (ac2[0][j].S == ac2[x][k].S) continue;
        dp[i][0][1] = max(dp[i][0][1], bs+ac2[0][j].F+ac2[x][k].F);
        dp[i][1][1] = max(dp[i][1][1], bs+ac2[0][j].F+ac2[x][k].F+w);
      }
    }
  }
}
int main() {
  ios::sync_with_stdio(0);
  cin.tie(0);
  int n;
  cin >> n;
  for (int i = 0; i < n-1; ++i) {
    int a, b, c;
    cin >> a >> b >> c;
    a--; b--;
    v[a].emplace_back(b, c);
    v[b].emplace_back(a, c);
  }
  h();
  cout << max(dp[0][0][0], dp[0][0][1]) << endl;
}

Test details

Test 1

Group: 1, 2, 3, 4

Verdict: ACCEPTED

input
5
1 2 10
1 3 40
1 4 15
1 5 20

correct output
60

user output
60

Test 2

Group: 1, 2, 3, 4

Verdict: ACCEPTED

input
10
4 10 2
1 2 21
1 3 13
6 7 1
...

correct output
140

user output
140

Test 3

Group: 1, 2, 3, 4

Verdict: ACCEPTED

input
10
4 10 5
1 10 7
3 10 10
3 9 10
...

correct output
61

user output
61

Test 4

Group: 1, 2, 3, 4

Verdict: ACCEPTED

input
10
7 10 1
2 7 3
6 7 5
1 9 5
...

correct output
30

user output
30

Test 5

Group: 1, 2, 3, 4

Verdict: ACCEPTED

input
10
3 10 6
3 7 6
8 9 3
1 5 1
...

correct output
44

user output
44

Test 6

Group: 1, 2, 3, 4

Verdict: ACCEPTED

input
10
5 6 9
2 3 5
1 10 8
4 5 9
...

correct output
62

user output
62

Test 7

Group: 1, 2, 3, 4

Verdict: ACCEPTED

input
10
2 3 7
6 9 7
2 10 6
4 9 2
...

correct output
41

user output
41

Test 8

Group: 1, 2, 3, 4

Verdict: ACCEPTED

input
10
7 9 1
3 5 9
1 6 3
5 9 3
...

correct output
53

user output
53

Test 9

Group: 1, 2, 3, 4

Verdict: ACCEPTED

input
10
3 6 9
2 5 5
2 4 1
4 9 2
...

correct output
43

user output
43

Test 10

Group: 1, 2, 3, 4

Verdict: ACCEPTED

input
10
2 3 4
4 8 9
1 8 2
2 4 6
...

correct output
39

user output
39

Test 11

Group: 1, 2, 3, 4

Verdict: ACCEPTED

input
10
1 8 4
2 3 7
3 10 4
2 4 7
...

correct output
48

user output
48

Test 12

Group: 1, 2, 3, 4

Verdict: ACCEPTED

input
10
8 9 7
2 3 8
2 6 5
2 9 1
...

correct output
35

user output
35

Test 13

Group: 2, 3, 4

Verdict: ACCEPTED

input
100
48 93 4
12 87 1
27 72 10
3 43 2
...

correct output
441

user output
441

Test 14

Group: 2, 3, 4

Verdict: ACCEPTED

input
100
38 97 8
26 29 9
62 73 7
13 62 8
...

correct output
498

user output
498

Test 15

Group: 2, 3, 4

Verdict: ACCEPTED

input
100
13 54 5
7 94 5
9 39 7
52 53 8
...

correct output
460

user output
460

Test 16

Group: 2, 3, 4

Verdict: ACCEPTED

input
200
147 182 33
101 186 14
7 66 10
73 180 33
...

correct output
4537

user output
4537

Test 17

Group: 2, 3, 4

Verdict: ACCEPTED

input
200
33 93 17
63 114 24
19 93 42
151 168 9
...

correct output
4605

user output
4605

Test 18

Group: 2, 3, 4

Verdict: ACCEPTED

input
200
25 94 45
143 166 19
24 103 16
133 200 43
...

correct output
4695

user output
4695

Test 19

Group: 2, 3, 4

Verdict: ACCEPTED

input
200
74 191 24
74 171 19
2 74 50
27 74 42
...

correct output
546

user output
546

Test 20

Group: 2, 3, 4

Verdict: ACCEPTED

input
200
98 200 12
12 87 47
19 98 31
9 87 14
...

correct output
233

user output
233

Test 21

Group: 2, 3, 4

Verdict: ACCEPTED

input
200
47 130 8
25 47 15
47 172 33
6 47 45
...

correct output
1202

user output
1202

Test 22

Group: 2, 3, 4

Verdict: ACCEPTED

input
200
56 174 43
28 56 22
26 112 21
56 119 44
...

correct output
3349

user output
3349

Test 23

Group: 3, 4

Verdict: ACCEPTED

input
5000
2198 4992 964
2521 2711 961
3408 4585 975
2746 3304 974
...

correct output
3848169

user output
3848169

Test 24

Group: 3, 4

Verdict: ACCEPTED

input
5000
1926 2920 933
565 1093 993
1894 4373 930
1713 3978 916
...

correct output
3789162

user output
3789162

Test 25

Group: 3, 4

Verdict: ACCEPTED

input
5000
2488 4286 905
898 3460 995
3342 4660 963
38 1300 971
...

correct output
3818444

user output
3818444

Test 26

Group: 3, 4

Verdict: ACCEPTED

input
10000
2751 6467 4918
3158 3563 4945
3261 6833 4929
2955 6313 4923
...

correct output
40189502

user output
40189502

Test 27

Group: 3, 4

Verdict: ACCEPTED

input
10000
2180 7493 4923
5745 9205 4949
446 7909 4938
2787 8203 4921
...

correct output
40070133

user output
40070133

Test 28

Group: 3, 4

Verdict: ACCEPTED

input
10000
3748 4584 4926
3748 7419 4990
1194 3748 4924
3748 6181 4996
...

correct output
3991669

user output
3991669

Test 29

Group: 3, 4

Verdict: ACCEPTED

input
10000
1070 4104 4988
2982 3086 4963
7216 8547 4971
1070 7973 4941
...

correct output
29901

user output
29901

Test 30

Group: 3, 4

Verdict: ACCEPTED

input
10000
7902 8933 4901
3764 6085 4995
1621 3537 4934
4050 8356 4996
...

correct output
8971361

user output
8971361

Test 31

Group: 3, 4

Verdict: ACCEPTED

input
10000
3309 7441 4960
5499 9949 4978
339 5089 4928
4076 7951 4916
...

correct output
29562255

user output
29562255

Test 32

Group: 4

Verdict: ACCEPTED

input
50000
22758 25880 990
917 25140 901
10537 30620 913
10368 14209 993
...

correct output
38479584

user output
38479584

Test 33

Group: 4

Verdict: ACCEPTED

input
50000
3238 13619 998
16363 38824 982
27886 39526 947
11705 35966 934
...

correct output
38503542

user output
38503542

Test 34

Group: 4

Verdict: ACCEPTED

input
50000
35799 44598 957
11590 25577 939
4784 35538 999
5004 9994 968
...

correct output
38465202

user output
38465202

Test 35

Group: 4

Verdict: ACCEPTED

input
200000
30736 178178 9996
90079 171554 9980
25124 79152 9901
54905 96160 9925
...

correct output
1605459774

user output
1605459774

Test 36

Group: 4

Verdict: ACCEPTED

input
200000
108342 138357 9984
110960 113525 9938
41108 45029 9990
55734 141188 9963
...

correct output
1607393503

user output
1607393503

Test 37

Group: 4

Verdict: ACCEPTED

input
200000
126722 130360 9943
89278 168087 9902
119299 167497 9901
53594 131583 9919
...

correct output
1606037984

user output
1606037984

Test 38

Group: 4

Verdict: ACCEPTED

input
200000
164755 181587 9909
108623 181587 9979
322 181587 9974
181138 181587 9946
...

correct output
160485772

user output
160485772

Test 39

Group: 4

Verdict: ACCEPTED

input
200000
27257 170181 9998
27257 46336 9911
64710 109131 9958
47607 164375 9999
...

correct output
59979

user output
59979

Test 40

Group: 4

Verdict: ACCEPTED

input
200000
100383 177661 9902
29890 102857 9905
4153 102857 9990
42390 177661 9901
...

correct output
360716635

user output
360716635

Test 41

Group: 4

Verdict: ACCEPTED

input
200000
122137 172111 9908
53871 122137 9978
85117 168845 9993
3821 9227 9906
...

correct output
1183642659

user output
1183642659