CSES - Siperia opettaa 5.0 - Results
Submission details
Task:HDRF
Sender:On
Submission time:2017-03-09 16:32:42 +0200
Language:C++
Status:READY
Result:0
Feedback
groupverdictscore
#10
Test results
testverdicttime
#1ACCEPTED0.04 sdetails
#20.04 sdetails
#30.04 sdetails
#40.04 sdetails
#50.03 sdetails
#60.05 sdetails
#70.03 sdetails
#80.05 sdetails
#9ACCEPTED0.03 sdetails
#100.03 sdetails
#110.04 sdetails
#120.03 sdetails
#130.04 sdetails
#140.04 sdetails
#150.04 sdetails
#160.03 sdetails
#170.04 sdetails
#180.04 sdetails
#190.03 sdetails
#200.03 sdetails
#210.04 sdetails
#220.05 sdetails
#230.04 sdetails
#240.04 sdetails
#250.05 sdetails
#260.05 sdetails
#270.05 sdetails
#280.03 sdetails
#290.06 sdetails
#300.04 sdetails
#310.04 sdetails
#320.07 sdetails
#330.05 sdetails
#340.06 sdetails
#350.07 sdetails
#360.04 sdetails
#370.06 sdetails
#380.06 sdetails
#390.06 sdetails
#400.06 sdetails
#410.04 sdetails
#420.06 sdetails
#430.07 sdetails
#440.05 sdetails
#450.06 sdetails
#460.05 sdetails
#470.06 sdetails
#480.07 sdetails
#490.07 sdetails
#500.06 sdetails
#510.08 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;

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

// Very slow, is the answer.

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];
		
		return;
	}
}

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]) {
				h(i);
				return;
			}
		}
	}
	
	z[x] = true;
	g(x);
	cout << (x + 1) << " ";
}

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++) {
		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 95 2 85 65 59 8 36 24...

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
77 72 43 9 93 49 70 13 69 66 7...

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 89 93 77 85 49 64 56 38 74 ...

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
40 10 11 100 87 58 86 67 28 26...

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 60 76 100 50 12 91 4 53 71 ...

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 36 191 55 35 178 85 43 3 30...

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
115 121 107 74 151 91 29 80 11...

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 13 181 18 163 24 130 2 158...

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 131 64 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
31 197 138 177 126 68 147 145 ...

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
152 115 63 240 257 206 66 98 4...

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 179 10 257 148 56 174 135 ...

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 226 207 54 241 126 151 138 ...

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
133 251 40 212 220 198 242 11 ...

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 247 142 47 103 178 256 ...

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
367 346 332 11 343 44 100 77 1...

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
288 254 34 114 319 251 163 183...

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 66 232 95 184 314 397 361 ...

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
152 131 226 382 240 276 136 19...

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
269 134 310 293 29 395 275 129...

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 10 69 104 499 251 433 337 4...

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
441 496 394 494 444 419 370 10...

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
297 445 117 188 206 156 438 32...

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 73 258 171 245 148 181...

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
349 354 36 315 419 257 318 414...

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
334 341 235 368 438 286 340 35...

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
263 116 194 344 63 174 561 560...

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
458 433 396 581 301 19 557 374...

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 194 346 163 161 423 385 15...

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
433 470 595 147 178 275 171 29...

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
23 414 109 265 690 127 21 504 ...

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
336 263 10 378 104 370 572 544...

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
603 243 406 580 329 635 17 574...

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
690 626 298 509 340 171 226 31...

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
268 431 626 69 96 647 42 118 3...

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
149 465 683 93 788 251 709 708...

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
44 619 355 39 792 30 390 264 3...

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 271 483 318 670 338 161 73...

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
66 78 566 303 132 186 47 504 3...

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
449 248 725 119 186 291 331 48...

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
709 125 199 835 275 491 299 40...

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
452 121 321 485 569 557 653 74...

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
135 532 639 335 416 155 81 727...

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
40 667 843 425 342 650 180 448...

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 753 895 467 792 741 221 88...

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
557 329 138 847 4 250 240 598 ...

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
113 518 897 180 42 847 338 228...

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
617 74 126 86 658 500 711 231 ...

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
828 874 20 296 283 377 952 979...

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
680 91 32 31 957 649 565 139 4...

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)