CSES - NOI 2019 - Results
Submission details
Task:Graph Ordering
Sender:Roope Salmi
Submission time:2019-03-06 15:41:53 +0200
Language:C++
Status:READY
Result:0
Feedback
groupverdictscore
#10
#20
#30
#40
#50
Test results
testverdicttimegroup
#10.23 s1, 4, 5details
#20.22 s1, 5details
#30.18 s1, 5details
#40.22 s1, 5details
#50.23 s1, 5details
#60.03 s2, 3, 5details
#70.04 s2, 3, 5details
#80.04 s2, 3, 4, 5details
#90.02 s2, 3, 4, 5details
#100.02 s2, 3, 4, 5details
#110.02 s2, 3, 5details
#120.01 s2, 3, 5details
#130.03 s2, 3, 4, 5details
#140.02 s2, 3, 4, 5details
#150.02 s2, 3, 4, 5details
#160.03 s2, 3, 4, 5details
#170.02 s2, 3, 4, 5details
#180.03 s2, 3, 4, 5details
#190.03 s3, 4, 5details
#200.03 s3, 4, 5details
#210.02 s3, 4, 5details
#220.02 s3, 4, 5details
#230.02 s3, 5details
#240.02 s3, 5details
#250.03 s3, 5details
#260.03 s3, 5details
#270.03 s3, 5details
#280.28 s5details
#290.28 s5details
#300.28 s4, 5details
#310.27 s4, 5details
#320.28 s4, 5details
#330.28 s4, 5details
#340.28 s5details
#350.28 s5details
#360.30 s5details
#370.02 s1, 2, 3, 4, 5details
#380.02 s2, 3, 5details
#390.02 s2, 3, 5details
#400.02 s2, 3, 5details
#410.03 s1, 2, 3, 5details
#420.02 s2, 3, 5details
#430.02 s3, 4, 5details
#440.02 s3, 4, 5details
#450.03 s2, 3, 4, 5details
#460.03 s2, 3, 4, 5details
#470.01 s2, 3, 5details
#480.02 s3, 4, 5details
#490.04 s4, 5details

Code

#include <bits/stdc++.h>
#define FAIL {cout << "IMPOSSIBLE\n"; exit(0);}
using namespace std;
int ap[101010], d[101010];
vector<int> v[101010];
vector<int> aps;
int h(int i, int p=-1, int cd=1) {
  d[i] = cd;
  int mu = cd;
  int fm = cd;
  int iap = 0, cws = 0;
  for (int j : v[i]) {
    if (j == p) continue;
    if (d[j]) {
      fm = min(fm, d[j]);
    } else {
      int x = h(j, i, cd+1);
      mu = min(mu, x);
      if (x > cd) iap = 1;
      if (x == cd) cws++;
    }
  }
  if (cws - (p == -1) > 0) iap = 1; 
  if (mu == cd && fm == cd && p != -1) iap = 1; 
  ap[i] = iap;
  if (iap) aps.push_back(i);
  return min(mu, fm);
}
vector<int> ds[101010];
int h4z[101010];
int h4s;
int h4(int i, int p=-1) {
  if (p != -1 && ap[i]) return 2;
  h4z[i] = 1;
  for (int j : v[i]) {
    if (j == p) continue;
    if (p == -1) {
      if (h4z[j]) continue;
      if (h4(j, i) == 1) ds[i].push_back(j);
    } else {
      if (j == h4s) continue;
      if (h4(j, i) == 2) h4z[i] = 2;
    }
  }
  return h4z[i];
}

vector<int> fo;
struct Lst {
  int v = -1;
  Lst *l = nullptr, *r = nullptr;
  bool rev = 0;
  Lst(int v) : v(v) {}
  Lst(Lst *l, Lst *r) : l(l), r(r) {}
  
  void crev() {
    rev ^= rev;
  }
  void serialize() {
    if (rev) {
      if (l) l->rev ^= 1;
      if (r) r->rev ^= 1;
      swap(l, r);
    }
    if (v == -1) {
      if (l) l->serialize();
      if (r) r->serialize();
    } else {
      fo.push_back(v);
    }
  }
};

int B, E;
int hfz[101010], hfd[101010];
Lst *fl[101010];
int hf(int i, int p=-1, int cd=1) {
  int cra = cd;
  hfd[i] = cd;
  fl[i] = new Lst(i);
  hfz[i] = 1;
  cout << i << "->" << endl;
  for (int j : v[i]) {
    if (j == p) continue;
    if (hfz[j]) {
      cra = min(cra, hfd[j]);
    } else {
      int x = hf(j, i);
      if (x < cd) {
        fl[i] = new Lst(fl[i], fl[j]);
      } else if (x == cd) {
        fl[j]->crev();
        fl[i] = new Lst(fl[j], fl[i]);
      } else {
        FAIL;
      }
      cra = min(cra, x);
    }
  }
  if (i == E) return -1;
  else return cra;
}

int main() {
  ios::sync_with_stdio(0);
  cin.tie(0);
  int n, m;
  cin >> n >> m;
  for (int i = 0; i < m; ++i) {
    int a, b;
    cin >> a >> b;
    a--; b--;
    v[a].push_back(b);
    v[b].push_back(a);
  }
  B = 0, E = n-1;
  hf(B);
  fl[B]->serialize();
  //h(0);
  for (int x : fo) cout << x+1 << " ";
  cout << endl;
}

Test details

Test 1

Group: 1, 4, 5

Verdict:

input
100000 99999
8326 74462
11810 58064
21677 73087
62986 25005
...

correct output
1 44159 25721 84659 90058 9960...

user output
0->
44158->
25720->
84658->
90057->
...

Test 2

Group: 1, 5

Verdict:

input
100000 99999
28990 31200
86271 56882
61089 18658
52422 57504
...

correct output
68068 86325 91398 75677 51068 ...

user output
0->
79069->
35588->
17994->
11571->
...

Test 3

Group: 1, 5

Verdict:

input
100000 99999
29378 80094
12282 29378
96138 29378
61870 29378
...

correct output
IMPOSSIBLE

user output
0->
29377->
80093->
12281->
96137->
...

Test 4

Group: 1, 5

Verdict:

input
100000 99999
97935 71091
9181 31715
73649 47675
45394 25464
...

correct output
IMPOSSIBLE

user output
0->
80553->
95963->
43100->
72833->
...

Test 5

Group: 1, 5

Verdict:

input
100000 99999
2897 55594
11759 89041
56061 8717
69672 73046
...

correct output
IMPOSSIBLE

user output
0->
84451->
91137->
32515->
28799->
...

Test 6

Group: 2, 3, 5

Verdict:

input
100 200
55 10
33 57
68 39
29 27
...

correct output
IMPOSSIBLE

user output
0->
57->
59->
77->
47->
...

Test 7

Group: 2, 3, 5

Verdict:

input
100 175
71 86
100 88
83 92
25 73
...

correct output
IMPOSSIBLE

user output
0->
16->
99->
87->
8->
...

Test 8

Group: 2, 3, 4, 5

Verdict:

input
100 200
26 58
49 25
66 20
20 85
...

correct output
1 2 86 60 34 92 23 4 44 89 76 ...

user output
0->
31->
25->
57->
80->
...

Test 9

Group: 2, 3, 4, 5

Verdict:

input
100 195
19 28
63 48
1 57
1 20
...

correct output
12 97 18 74 36 10 78 50 61 95 ...

user output
0->
56->
52->
16->
78->
...

Test 10

Group: 2, 3, 4, 5

Verdict:

input
100 193
48 66
15 67
32 14
36 78
...

correct output
1 56 13 32 14 49 75 93 18 6 54...

user output
0->
11->
16->
54->
42->
...

Test 11

Group: 2, 3, 5

Verdict:

input
100 195
47 68
57 61
45 17
80 61
...

correct output
57 20 83 41 25 33 60 91 59 7 7...

user output
0->
49->
25->
38->
60->
...

Test 12

Group: 2, 3, 5

Verdict:

input
100 185
43 78
76 99
78 39
83 61
...

correct output
78 43 32 88 26 28 64 81 7 72 2...

user output
0->
12->
61->
7->
32->
...

Test 13

Group: 2, 3, 4, 5

Verdict:

input
99 132
96 16
18 89
98 50
66 26
...

correct output
1 12 45 71 97 22 35 9 60 27 20...

user output
0->
11->
44->
70->
96->
...

Test 14

Group: 2, 3, 4, 5

Verdict:

input
98 144
25 6
30 34
58 25
31 41
...

correct output
32 7 92 1 63 86 87 14 90 17 81...

user output
0->
62->
31->
91->
6->
...

Test 15

Group: 2, 3, 4, 5

Verdict:

input
96 145
19 70
72 92
27 72
17 85
...

correct output
1 50 30 4 10 48 42 5 70 19 29 ...

user output
0->
49->
3->
29->
9->
...

Test 16

Group: 2, 3, 4, 5

Verdict:

input
96 158
79 74
41 70
8 5
73 90
...

correct output
7 59 44 27 1 30 49 28 80 52 15...

user output
0->
58->
6->
29->
48->
...

Test 17

Group: 2, 3, 4, 5

Verdict:

input
96 142
95 35
67 89
91 70
48 21
...

correct output
13 20 81 33 1 51 19 69 16 85 6...

user output
0->
50->
12->
32->
80->
...

Test 18

Group: 2, 3, 4, 5

Verdict:

input
72 111
70 17
25 3
58 24
52 9
...

correct output
21 59 48 8 1 2 31 10 11 41 4 5...

user output
0->
1->
20->
58->
47->
...

Test 19

Group: 3, 4, 5

Verdict:

input
988 1563
402 701
830 801
50 578
8 144
...

correct output
1 136 368 683 447 304 131 53 8...

user output
0->
135->
367->
682->
446->
...

Test 20

Group: 3, 4, 5

Verdict:

input
994 1555
171 541
66 915
330 350
494 251
...

correct output
1 164 205 151 951 797 4 654 14...

user output
0->
950->
796->
150->
163->
...

Test 21

Group: 3, 4, 5

Verdict:

input
1000 2000
711 947
775 441
691 471
844 28
...

correct output
1 676 731 662 248 31 165 558 8...

user output
0->
175->
216->
315->
185->
...

Test 22

Group: 3, 4, 5

Verdict:

input
1000 2000
811 889
873 984
83 52
144 511
...

correct output
60 909 522 568 40 77 181 441 8...

user output
0->
45->
59->
908->
897->
...

Test 23

Group: 3, 5

Verdict:

input
1000 1869
625 715
448 714
110 927
432 1000
...

correct output
224 326 221 30 76 475 666 694 ...

user output
0->
735->
455->
853->
412->
...

Test 24

Group: 3, 5

Verdict:

input
1000 1783
709 1
182 768
355 40
786 260
...

correct output
230 6 135 678 346 19 470 960 3...

user output
0->
708->
363->
686->
695->
...

Test 25

Group: 3, 5

Verdict:

input
1000 2000
92 876
273 598
287 535
526 972
...

correct output
IMPOSSIBLE

user output
0->
738->
76->
854->
381->
...

Test 26

Group: 3, 5

Verdict:

input
1000 1910
789 821
553 740
889 527
488 730
...

correct output
IMPOSSIBLE

user output
0->
273->
146->
861->
805->
...

Test 27

Group: 3, 5

Verdict:

input
1000 1608
910 416
503 898
928 14
412 903
...

correct output
140 404 739 563 63 794 623 948...

user output
0->
617->
813->
540->
781->
...

Test 28

Group: 5

Verdict:

input
100000 198666
5659 89691
91040 53375
96642 56177
28768 57001
...

correct output
45598 74078 1039 83702 16344 8...

user output
0->
59740->
84526->
42863->
55272->
...

Test 29

Group: 5

Verdict:

input
100000 197194
41636 91770
63018 23827
39207 93713
67765 47715
...

correct output
79054 61855 53279 55546 60860 ...

user output
0->
4669->
53249->
92316->
12067->
...

Test 30

Group: 4, 5

Verdict:

input
100000 199985
13674 42886
51349 6858
78502 18751
13628 65936
...

correct output
17857 81664 4369 61462 79754 8...

user output
0->
47063->
17856->
73638->
66121->
...

Test 31

Group: 4, 5

Verdict:

input
100000 200000
27666 33166
7161 81452
73134 30281
5106 29308
...

correct output
76869 5635 23236 12666 61633 8...

user output
0->
73904->
76868->
20738->
85338->
...

Test 32

Group: 4, 5

Verdict:

input
100000 200000
62814 54729
98407 26888
91808 70132
58916 49730
...

correct output
19788 11202 3496 24237 68564 5...

user output
0->
18730->
19787->
22794->
80817->
...

Test 33

Group: 4, 5

Verdict:

input
100000 200000
2299 91653
21125 75544
54029 94067
86513 45051
...

correct output
1 20339 9304 40427 67694 95656...

user output
0->
82114->
67686->
53250->
15611->
...

Test 34

Group: 5

Verdict:

input
100000 200000
34688 93668
78127 18902
55150 33116
273 88797
...

correct output
IMPOSSIBLE

user output
0->
95149->
22147->
78970->
58444->
...

Test 35

Group: 5

Verdict:

input
100000 200000
21026 14630
5605 59639
25604 78683
55713 70513
...

correct output
IMPOSSIBLE

user output
0->
98790->
93377->
28282->
13694->
...

Test 36

Group: 5

Verdict:

input
100000 200000
63190 73606
52072 54105
22092 31495
9189 37924
...

correct output
IMPOSSIBLE

user output
0->
78891->
38662->
92836->
32489->
...

Test 37

Group: 1, 2, 3, 4, 5

Verdict:

input
2 1
2 1

correct output
1 2

user output
0->
1->
1 2 

Test 38

Group: 2, 3, 5

Verdict:

input
7 9
1 2
1 3
2 3
1 4
...

correct output
IMPOSSIBLE

user output
0->
1->
2->
3->
4->
...

Test 39

Group: 2, 3, 5

Verdict:

input
9 12
1 2
2 3
3 1
4 5
...

correct output
IMPOSSIBLE

user output
0->
1->
2->
3->
4->
...

Test 40

Group: 2, 3, 5

Verdict:

input
5 5
4 2
4 3
2 1
3 1
...

correct output
4 2 3 1 5

user output
0->
1->
3->
2->
4->
...

Test 41

Group: 1, 2, 3, 5

Verdict:

input
4 3
1 2
3 2
4 2

correct output
IMPOSSIBLE

user output
0->
1->
2->
3->
1 3 2 4 

Test 42

Group: 2, 3, 5

Verdict:

input
17 30
4 1
3 14
6 16
13 6
...

correct output
7 8 11 15 1 2 9 3 14 13 5 10 1...

user output
0->
3->
5->
15->
11->
...

Test 43

Group: 3, 4, 5

Verdict:

input
992 1712
377 709
847 640
261 902
761 693
...

correct output
870 1 925 928 950 257 766 520 ...

user output
0->
45->
869->
924->
927->
...

Test 44

Group: 3, 4, 5

Verdict:

input
990 1672
305 445
800 155
365 779
824 247
...

correct output
108 461 160 696 895 655 376 21...

user output
0->
729->
107->
695->
894->
...

Test 45

Group: 2, 3, 4, 5

Verdict:

input
99 169
35 32
97 43
22 62
33 7
...

correct output
19 70 62 22 54 78 25 14 3 81 1...

user output
0->
18->
40->
55->
33->
...

Test 46

Group: 2, 3, 4, 5

Verdict:

input
99 164
62 73
19 35
55 92
79 91
...

correct output
21 25 64 90 17 15 89 95 70 33 ...

user output
0->
74->
95->
63->
9->
...

Test 47

Group: 2, 3, 5

Verdict:

input
53 68
7 46
51 14
3 18
8 40
...

correct output
32 30 38 33 27 12 8 20 2 34 45...

user output
0->
50->
13->
16->
12->
...

Test 48

Group: 3, 4, 5

Verdict:

input
996 1902
661 201
19 613
895 438
180 32
...

correct output
220 795 198 239 40 164 773 834...

user output
0->
928->
383->
30->
710->
...

Test 49

Group: 4, 5

Verdict:

input
6110 11528
3366 4718
3226 2188
5022 1186
3205 5349
...

correct output
1 2527 2211 554 4201 4522 1494...

user output
0->
3679->
3062->
3137->
1255->
...