CSES - Siperia opettaa 5.0 - Results
Submission details
Task:HDRF
Sender:On
Submission time:2017-03-09 15:26:56 +0200
Language:C++
Status:READY
Result:0
Feedback
groupverdictscore
#10
Test results
testverdicttime
#1ACCEPTED0.05 sdetails
#20.04 sdetails
#30.04 sdetails
#40.05 sdetails
#50.04 sdetails
#60.04 sdetails
#70.04 sdetails
#80.05 sdetails
#9ACCEPTED0.04 sdetails
#100.05 sdetails
#110.05 sdetails
#120.04 sdetails
#130.04 sdetails
#140.04 sdetails
#150.04 sdetails
#160.04 sdetails
#170.04 sdetails
#180.03 sdetails
#190.04 sdetails
#200.03 sdetails
#210.04 sdetails
#220.04 sdetails
#230.04 sdetails
#240.03 sdetails
#250.04 sdetails
#260.03 sdetails
#270.04 sdetails
#280.04 sdetails
#290.04 sdetails
#300.04 sdetails
#310.04 sdetails
#320.03 sdetails
#330.03 sdetails
#340.05 sdetails
#350.04 sdetails
#360.03 sdetails
#370.05 sdetails
#380.04 sdetails
#390.05 sdetails
#400.04 sdetails
#410.04 sdetails
#420.05 sdetails
#430.07 sdetails
#440.04 sdetails
#450.05 sdetails
#460.04 sdetails
#470.06 sdetails
#480.04 sdetails
#490.04 sdetails
#500.05 sdetails
#510.04 sdetails
#520.06 sdetails
#53--details
#54--details
#55--details
#56--details
#57--details
#58--details
#59--details
#60--details
#61--details
#62--details
#63--details

Code

#include <bits/stdc++.h>

using namespace std;

int n, t, c = 0;

vector<vector<int>> v;
vector<int> w, r, p;
vector<bool> z;

// But how, slow, can you go?

void f(int x) {
	if(z[x]) return;
	
	r[x] = x;
	
	for(auto i : v[x]) f(i);
	
	for(auto i : v[x]) {
		if(z[i]) continue;
		
		if(w[r[i]] < w[x]) r[x] = r[i];
	}
}

void g(int x) {
	/*int y = p[x];
	while(r[p[y]] == x && y != 0) y = p[y];
	f(y >= 0 ? y : 0);*/
	
	f(0);
}

void h(int x) {
	if(z[x]) return;
	
	if(v[x].size() > 0) {
		for(auto i : v[x]) {
			if(z[i]) continue;
			
			h(i);
			
			return;
		}
	}
	
	g(x);
	z[x] = true;
	cout << (x + 1) << " ";
	c++;
	
	if(c < n) h(0);
}

int main() {
	ios_base::sync_with_stdio(0);
	cin.tie(0);
	
	cin >> n;
	
	p.resize(n);
	r.resize(n);
	v.resize(n);
	w.resize(n);
	z.resize(n);
	
	p[0] = -1;
	
	for(int i = 0; i < n-1; i++) {
		cin >> t;
		v[t-1].push_back(i+1);
		p[i+1] = t-1;
	}
	
	for(int i = 0; i < n; i++) cin >> w[i];
	
	for(int i = 0; i < n; i++) {
		sort(v[i].begin(), v[i].end(), [](int a, int b) {
			if(w[a] == w[b]) return b > a;
			else return w[b] > w[a];
		});
	}
	
	f(0);
	
	for(int i = 0; i < n; i++) {
		sort(v[i].begin(), v[i].end(), [](int a, int b) {
			if(w[r[a]] == w[r[b]]) return b > a;
			else return w[r[b]] > w[r[a]];
		});
	}
	
	h(0);
	
	cout << endl;
}

Test details

Test 1

Verdict: ACCEPTED

input
2
1
1 2

correct output
2 1 

user output
2 1 

Test 2

Verdict:

input
100
85 42 34 7 48 48 63 90 37 80 2...

correct output
95 2 85 65 59 8 36 24 82 71 61...

user output
88 81 93 58 70 13 50 76 10 45 ...

Test 3

Verdict:

input
100
14 35 99 80 25 28 11 70 24 51 ...

correct output
72 77 43 9 93 49 70 13 69 66 7...

user output
3 35 6 25 19 93 72 43 9 49 70 ...

Test 4

Verdict:

input
100
60 55 18 87 58 26 35 17 48 9 8...

correct output
89 77 39 93 49 64 56 38 74 80 ...

user output
39 85 73 49 64 56 38 74 10 11 ...

Test 5

Verdict:

input
100
57 68 23 81 85 54 62 73 100 10...

correct output
10 11 100 40 58 86 67 28 26 51...

user output
10 11 100 88 43 49 74 95 42 39...

Test 6

Verdict:

input
100
33 22 18 33 26 31 57 23 93 97 ...

correct output
60 100 4 10 76 50 71 94 17 20 ...

user output
10 91 39 67 12 82 35 76 50 24 ...

Test 7

Verdict:

input
200
87 30 52 56 164 149 193 82 188...

correct output
191 178 85 36 55 35 43 3 30 97...

user output
80 57 65 107 28 171 24 191 118...

Test 8

Verdict:

input
200
3 59 148 66 188 81 172 152 170...

correct output
115 121 107 74 151 91 80 118 2...

user output
121 107 74 151 29 116 200 115 ...

Test 9

Verdict: ACCEPTED

input
5
4 4 1 1
3 5 2 1 4

correct output
3 2 4 5 1 

user output
3 2 4 5 1 

Test 10

Verdict:

input
200
158 82 152 26 46 191 100 180 2...

correct output
13 181 18 163 24 130 2 158 184...

user output
179 194 33 55 76 136 71 72 16 ...

Test 11

Verdict:

input
200
197 134 27 109 102 77 30 71 14...

correct output
112 144 12 131 64 137 175 117 ...

user output
112 144 12 64 131 137 175 117 ...

Test 12

Verdict:

input
200
101 78 128 55 9 78 35 87 56 6 ...

correct output
197 138 177 126 68 147 145 73 ...

user output
121 65 142 120 104 60 33 96 14...

Test 13

Verdict:

input
300
259 151 284 164 193 153 20 153...

correct output
63 240 115 257 206 66 42 113 2...

user output
225 17 28 265 126 80 60 33 15 ...

Test 14

Verdict:

input
300
127 280 20 1 186 215 59 101 25...

correct output
10 257 179 56 174 135 42 169 2...

user output
232 220 226 148 13 270 76 12 3...

Test 15

Verdict:

input
300
81 283 149 69 227 39 144 70 28...

correct output
207 54 241 126 151 138 118 51 ...

user output
61 100 109 9 70 132 197 112 27...

Test 16

Verdict:

input
300
12 265 12 226 196 226 179 185 ...

correct output
220 198 242 11 256 125 212 174...

user output
197 276 243 18 172 251 45 47 2...

Test 17

Verdict:

input
300
91 60 106 191 300 27 191 10 28...

correct output
247 142 103 178 256 9 154 16 8...

user output
78 238 47 170 193 83 237 288 1...

Test 18

Verdict:

input
400
331 329 307 121 72 279 344 213...

correct output
346 367 343 332 11 100 44 77 1...

user output
332 11 367 100 84 300 343 346 ...

Test 19

Verdict:

input
400
305 158 217 151 291 189 338 26...

correct output
114 319 34 163 183 13 175 87 3...

user output
34 155 163 183 13 175 87 362 2...

Test 20

Verdict:

input
400
354 21 151 275 188 159 154 328...

correct output
232 184 314 111 112 227 393 5 ...

user output
264 317 226 322 117 127 153 28...

Test 21

Verdict:

input
400
279 376 349 253 29 112 157 110...

correct output
131 226 382 240 276 66 136 190...

user output
136 190 303 126 95 271 2 279 3...

Test 22

Verdict:

input
400
370 349 95 374 373 220 187 223...

correct output
269 29 129 266 222 394 395 275...

user output
318 364 389 326 103 284 122 19...

Test 23

Verdict:

input
500
55 153 455 345 272 93 24 440 4...

correct output
69 104 10 499 433 251 337 470 ...

user output
46 400 369 145 239 407 187 500...

Test 24

Verdict:

input
500
297 2 308 68 421 288 151 117 3...

correct output
494 444 419 370 107 261 439 16...

user output
488 57 441 313 140 404 187 67 ...

Test 25

Verdict:

input
500
448 452 207 81 168 458 431 499...

correct output
445 117 188 206 156 438 321 13...

user output
117 445 188 206 156 486 330 14...

Test 26

Verdict:

input
500
462 261 399 462 328 277 22 319...

correct output
73 258 171 245 148 181 110 297...

user output
185 380 442 20 66 456 140 224 ...

Test 27

Verdict:

input
500
344 249 220 264 277 322 90 164...

correct output
36 419 257 318 414 355 179 107...

user output
354 315 458 45 150 114 293 48 ...

Test 28

Verdict:

input
600
518 98 32 91 331 69 562 488 31...

correct output
438 286 235 368 340 354 338 39...

user output
557 230 60 236 526 326 576 437...

Test 29

Verdict:

input
600
107 462 245 156 410 126 414 28...

correct output
116 194 344 560 59 337 543 233...

user output
223 565 507 182 195 352 174 23...

Test 30

Verdict:

input
600
158 283 486 462 491 341 528 83...

correct output
581 301 19 557 374 433 396 278...

user output
424 279 485 170 304 298 132 10...

Test 31

Verdict:

input
600
222 353 470 77 426 573 201 36 ...

correct output
346 194 423 385 43 161 373 154...

user output
464 408 479 197 188 547 378 53...

Test 32

Verdict:

input
600
563 593 20 438 30 525 291 199 ...

correct output
275 171 292 426 133 136 285 21...

user output
37 298 124 55 203 407 455 16 4...

Test 33

Verdict:

input
700
578 320 44 92 179 368 524 61 5...

correct output
127 21 504 411 619 214 103 230...

user output
265 685 292 332 110 268 394 41...

Test 34

Verdict:

input
700
172 367 171 680 68 431 90 465 ...

correct output
336 263 10 104 370 572 544 173...

user output
635 57 627 656 626 46 376 316 ...

Test 35

Verdict:

input
700
592 485 633 263 13 500 234 164...

correct output
580 329 635 17 574 191 672 280...

user output
145 243 433 174 348 475 631 45...

Test 36

Verdict:

input
700
281 479 279 98 11 309 125 538 ...

correct output
509 340 171 226 298 317 16 200...

user output
132 143 613 218 460 547 57 509...

Test 37

Verdict:

input
700
129 142 226 50 471 445 533 580...

correct output
69 96 324 645 208 167 652 431 ...

user output
431 626 120 461 559 103 608 50...

Test 38

Verdict:

input
800
299 797 180 295 481 278 317 59...

correct output
149 251 709 708 421 733 798 24...

user output
465 788 78 372 264 739 693 349...

Test 39

Verdict:

input
800
61 61 439 356 175 216 137 325 ...

correct output
792 30 44 426 502 39 390 264 3...

user output
484 214 583 491 796 142 350 36...

Test 40

Verdict:

input
800
310 772 726 621 51 556 795 711...

correct output
318 161 733 86 72 271 483 670 ...

user output
709 628 365 139 155 760 368 14...

Test 41

Verdict:

input
800
24 46 39 770 278 218 657 362 7...

correct output
566 303 132 186 47 504 78 356 ...

user output
47 504 326 356 377 545 570 406...

Test 42

Verdict:

input
800
166 688 171 741 50 312 299 562...

correct output
119 186 291 331 48 603 575 162...

user output
248 449 725 338 581 319 455 53...

Test 43

Verdict:

input
900
793 286 814 824 112 575 524 54...

correct output
40 835 125 199 491 175 355 624...

user output
581 379 476 371 508 873 425 27...

Test 44

Verdict:

input
900
86 520 750 436 711 598 268 322...

correct output
485 569 557 653 321 748 277 12...

user output
121 466 483 493 94 656 347 395...

Test 45

Verdict:

input
900
3 211 842 343 877 364 381 214 ...

correct output
335 639 155 81 727 888 416 752...

user output
883 305 464 807 272 117 398 64...

Test 46

Verdict:

input
900
685 497 629 389 831 507 57 228...

correct output
425 843 342 667 650 180 448 57...

user output
295 630 320 589 105 40 475 180...

Test 47

Verdict:

input
900
158 489 267 475 847 29 542 314...

correct output
467 792 741 221 125 49 266 887...

user output
818 859 147 339 737 359 239 68...

Test 48

Verdict:

input
1000
588 544 250 749 769 456 423 98...

correct output
329 138 847 4 250 240 598 786 ...

user output
981 306 391 519 887 360 515 65...

Test 49

Verdict:

input
1000
998 174 882 645 585 920 107 17...

correct output
180 42 847 338 228 166 612 827...

user output
679 931 518 517 390 661 522 62...

Test 50

Verdict:

input
1000
805 235 974 610 433 854 903 20...

correct output
126 86 658 500 711 231 921 615...

user output
572 607 531 480 963 350 390 76...

Test 51

Verdict:

input
1000
598 148 206 204 622 95 358 928...

correct output
296 283 952 288 354 907 915 77...

user output
684 760 980 803 464 802 932 58...

Test 52

Verdict:

input
1000
490 683 469 136 805 544 246 51...

correct output
31 957 649 565 32 475 315 811 ...

user output
192 889 236 6 189 299 432 388 ...

Test 53

Verdict:

input
100000
4944 311 69209 28682 87084 233...

correct output
78792 8393 13826 63615 17735 1...

user output
(empty)

Test 54

Verdict:

input
100000
34704 25911 59988 65186 29855 ...

correct output
44265 90477 6685 27459 49090 5...

user output
(empty)

Test 55

Verdict:

input
100000
32646 4868 34091 77349 54878 6...

correct output
69142 94411 68862 51664 42109 ...

user output
(empty)

Test 56

Verdict:

input
100000
50383 56465 63211 49461 99139 ...

correct output
95420 71427 95626 67011 82375 ...

user output
(empty)

Test 57

Verdict:

input
100000
94540 25313 57758 7201 51119 4...

correct output
79187 70032 63831 69384 51604 ...

user output
(empty)

Test 58

Verdict:

input
100000
14300 28427 96935 52311 13463 ...

correct output
5395 57047 3087 83662 90503 24...

user output
(empty)

Test 59

Verdict:

input
100000
14543 20265 6813 97256 2007 32...

correct output
16434 64136 27052 56089 37320 ...

user output
(empty)

Test 60

Verdict:

input
100000
87233 22493 10433 86194 52186 ...

correct output
62003 25428 66260 57053 59291 ...

user output
(empty)

Test 61

Verdict:

input
100000
83612 41781 34903 19741 34951 ...

correct output
29843 44886 70357 52228 52247 ...

user output
(empty)

Test 62

Verdict:

input
99995
1 2 2 4 4 6 6 8 8 10 10 12 12 ...

correct output
99995 49998 99994 49997 99993 ...

user output
(empty)

Test 63

Verdict:

input
100000
1 2 3 4 5 6 7 8 9 10 11 12 13 ...

correct output
100000 99999 99998 99997 99996...

user output
(empty)