CSES - NOI 2019 - Results
Submission details
Task:Graph Ordering
Sender:Olli Järviniemi
Submission time:2019-03-06 15:48:01 +0200
Language:C++
Status:READY
Result:7
Feedback
groupverdictscore
#1ACCEPTED7
#20
#30
#40
#50
Test results
testverdicttimegroup
#1ACCEPTED0.16 s1, 4, 5details
#2ACCEPTED0.16 s1, 5details
#3ACCEPTED0.11 s1, 5details
#4ACCEPTED0.15 s1, 5details
#5ACCEPTED0.14 s1, 5details
#60.03 s2, 3, 5details
#70.03 s2, 3, 5details
#80.03 s2, 3, 4, 5details
#90.02 s2, 3, 4, 5details
#100.02 s2, 3, 4, 5details
#110.03 s2, 3, 5details
#120.02 s2, 3, 5details
#130.02 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.02 s3, 4, 5details
#200.03 s3, 4, 5details
#210.03 s3, 4, 5details
#220.03 s3, 4, 5details
#230.03 s3, 5details
#240.02 s3, 5details
#250.02 s3, 5details
#260.04 s3, 5details
#270.03 s3, 5details
#280.34 s5details
#290.34 s5details
#300.37 s4, 5details
#310.34 s4, 5details
#320.36 s4, 5details
#330.38 s4, 5details
#340.37 s5details
#350.38 s5details
#360.37 s5details
#37ACCEPTED0.02 s1, 2, 3, 4, 5details
#380.03 s2, 3, 5details
#390.03 s2, 3, 5details
#400.03 s2, 3, 5details
#41ACCEPTED0.02 s1, 2, 3, 5details
#420.03 s2, 3, 5details
#430.02 s3, 4, 5details
#440.04 s3, 4, 5details
#450.02 s2, 3, 4, 5details
#460.03 s2, 3, 4, 5details
#470.02 s2, 3, 5details
#480.03 s3, 4, 5details
#490.04 s4, 5details

Compiler report

input/code.cpp: In function 'void dfsTree(int)':
input/code.cpp:20:19: warning: comparison between signed and unsigned integer expressions [-Wsign-compare]
  for(int j = 0; j < g[i].size(); ++j) {
                 ~~^~~~~~~~~~~~~
input/code.cpp: In function 'void dfsRe(int)':
input/code.cpp:35:19: warning: comparison between signed and unsigned integer expressions [-Wsign-compare]
  for(int j = 0; j < re[i].size(); ++j) {
                 ~~^~~~~~~~~~~~~~
input/code.cpp: In function 'int main()':
input/code.cpp:68:21: warning: comparison between signed and unsigned integer expressions [-Wsign-compare]
    for(int i = 0; i < ans.size(); ++i) {
                   ~~^~~~~~~~~~~~
input/code.cpp:104:22: warning: comparison between signed and unsigned integer expressions [-Wsign-compare]
     for(int j = 0; j < g[a].size(); ++j) {
                    ~~^~~~~~~~~~~~~
input/code.cpp:125:22: warning: comparison between signed and unsigned integer expressions [-Wsign-compare]
     for(int j = 0;...

Code

#include <iostream>
#include <vector>
#include <queue>
#include <algorithm>

using namespace std;

const int N = 1e5 + 5;

vector<int> g[N];

bool z[N];

vector<int> ans;

void dfsTree(int i) {
	if(z[i]) return;
	z[i] = true;
	ans.push_back(i);
	for(int j = 0; j < g[i].size(); ++j) {
		dfsTree(g[i][j]);
	}
}

vector<int> ne[N];
vector<int> re[N];

vector<int> ord;
int dp[N];
int se;
void dfsRe(int i) {
	if(z[i]) return;
	z[i] = true;
	++se;
	for(int j = 0; j < re[i].size(); ++j) {
		dfsRe(re[i][j]);
	}
	ord.push_back(i);
}
int p[N];
int di[N];


int main() {
	int n, m;
	cin >> n >> m;
	
	if(m == n-1) {


		for(int i = 1; i <= m; ++i) {
			int a, b;
			cin >> a >> b;
			g[a].push_back(b);
			g[b].push_back(a);
		}
		int am = 0;
		for(int i = 1; i <= n; ++i) {
			if(g[i].size() == 1) {
				++am;
				if(am == 1) {
					dfsTree(i);
				}
			}
		}

		if(am == 2) {
			for(int i = 0; i < ans.size(); ++i) {
				cout << ans[i] << " ";
			}
			cout << "\n";
		} else {
			cout << "IMPOSSIBLE\n";
		}

		return 0;
	}


	for(int i = 1; i <= m; ++i) {
		int a, b;
		cin >> a >> b;
		g[a].push_back(b);
		g[b].push_back(a);
	}


	for(int st = 1; st <= n; ++st) {
		for(int en = 1; en <= n; ++en) {
			if(st == en) continue;
		//	if(st != 1 || en != 8) continue;
			queue<int> q;
			q.push(en);

			for(int i = 1; i <= n; ++i) {
				z[i] = false;
			}
			di[en] = 1;
			while(!q.empty()) {
				int a = q.front();
				q.pop();
				if(z[a]) continue;
				z[a] = true;
				for(int j = 0; j < g[a].size(); ++j) {
					int b = g[a][j];
					if(z[b]) continue;
					if(di[b] == 0) {
						di[b] = di[a] + 1;
					}
					q.push(b);
				}
			}

			q.push(st);
			for(int i = 1; i <= n; ++i) {
				z[i] = false;
			}

			while(!q.empty()) {
				int a = q.front();
				q.pop();
				if(z[a]) continue;
				z[a] = true;
				if(a == en) continue;
				for(int j = 0; j < g[a].size(); ++j) {
					int b = g[a][j];
					if(di[b] > di[a]) {
						q.push(b);
						continue;
					}
					ne[a].push_back(b);
					re[b].push_back(a);
					p[b] = a;
					q.push(b);
				}
			}
			for(int i = 1; i <= n; ++i) {
				z[i] = false;
			}

	/*		for(int i = 1; i <= n; ++i) {
				for(int j = 0; j < ne[i].size(); ++j) {
					cout << ne[i][j] << " ";
				}
				cout << "\n";
			}
*/
			dfsRe(en);
			if(se != n) {
				for(int i = 1; i <= n; ++i) {
					ne[i].clear();
					re[i].clear();
					di[i] = 0;
				}
				se = 0;
				ord.clear();
				continue;
			}

			dp[st] = 0;
			vector<pair<int, int> > v;
			v.push_back({0, st});
			for(int i = 1; i < n; ++i) {
				int k = ord[i];
				int ma = -1;
				for(int j = 0; j < re[k].size(); ++j) {
					ma = max(ma, dp[re[k][j]]);
				}
				dp[k] = ma + 1;
				v.push_back({dp[k], k});
			
			}
			sort(v.begin(), v.end());
			for(int i = 0; i < v.size(); ++i) {
				cout << v[i].second << " ";
			}
		/*	cout << "\n\n\n";
			for(int i = 0; i < v.size(); ++i) {
				cout << v[i].first << " " << v[i].second << "\n";
			}
			cout << st << " " << en << "\n";

			for(int i = 0; i < ord.size(); ++i) {
				cout << ord[i] << " ";
			}
			cout << "\n";
		*/	
			cout << "\n";
	/*		cout << st << " " << en << "\n";
			for(int i = 1; i <= n; ++i) {
				cout << "Neighbors of " << i << ": ";
				for(int j = 0; j < ne[i].size(); ++j) {
					cout << ne[i][j] << " ";
				}
				cout << "\n";
			}
		*/	return 0;
		}
	}
	cout << "IMPOSSIBLE\n";
	return 0;
}

Test details

Test 1

Group: 1, 4, 5

Verdict: ACCEPTED

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

correct output
1 44159 25721 84659 90058 9960...

user output
1 44159 25721 84659 90058 9960...

Test 2

Group: 1, 5

Verdict: ACCEPTED

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

correct output
68068 86325 91398 75677 51068 ...

user output
68068 86325 91398 75677 51068 ...

Test 3

Group: 1, 5

Verdict: ACCEPTED

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

correct output
IMPOSSIBLE

user output
IMPOSSIBLE

Test 4

Group: 1, 5

Verdict: ACCEPTED

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

correct output
IMPOSSIBLE

user output
IMPOSSIBLE

Test 5

Group: 1, 5

Verdict: ACCEPTED

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

correct output
IMPOSSIBLE

user output
IMPOSSIBLE

Test 6

Group: 2, 3, 5

Verdict:

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

correct output
IMPOSSIBLE

user output
1 19 21 38 45 81 90 94 3 5 24 ...

Test 7

Group: 2, 3, 5

Verdict:

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

correct output
IMPOSSIBLE

user output
1 10 11 15 18 28 37 38 45 51 6...

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
1 18 21 28 30 35 61 75 94 95 5...

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
1 7 13 22 28 75 84 86 3 8 10 2...

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
1 22 38 73 80 82 93 96 5 11 14...

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
1 3 17 19 25 38 94 5 8 12 16 1...

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
1 16 21 41 63 81 97 98 4 7 11 ...

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
1 7 28 32 47 53 72 77 80 82 92...

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
1 5 15 16 24 28 34 39 46 64 71...

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
1 3 15 30 31 61 62 68 74 76 78...

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
1 9 12 24 26 27 31 36 37 53 54...

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
1 20 42 50 69 78 85 89 96 4 9 ...

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
1 46 4 8 10 12 15 24 28 32 35 ...

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
1 7 9 20 22 23 29 43 47 75 84 ...

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
1 16 21 29 35 58 64 73 79 94 1...

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
1 26 32 34 43 55 58 60 71 83 8...

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
1 11 17 18 21 28 45 55 87 124 ...

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
1 5 10 13 25 36 85 112 117 127...

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
1 3 8 11 37 45 46 90 93 102 10...

Test 25

Group: 3, 5

Verdict:

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

correct output
IMPOSSIBLE

user output
1 31 39 49 58 73 103 107 112 1...

Test 26

Group: 3, 5

Verdict:

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

correct output
IMPOSSIBLE

user output
1 7 12 18 27 36 69 70 78 83 90...

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
1 9 19 21 39 40 47 56 57 63 76...

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
1 13 17 18 20 40 45 56 67 71 7...

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
1 8 12 34 76 86 91 99 102 120 ...

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
1 4 7 8 11 18 22 36 75 76 91 1...

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
1 5 13 35 44 60 71 86 95 103 1...

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
1 6 29 39 48 74 83 110 112 121...

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
1 12 41 60 77 80 98 111 142 15...

Test 34

Group: 5

Verdict:

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

correct output
IMPOSSIBLE

user output
1 4 26 39 40 59 61 70 80 93 99...

Test 35

Group: 5

Verdict:

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

correct output
IMPOSSIBLE

user output
1 25 45 46 50 57 67 69 76 87 9...

Test 36

Group: 5

Verdict:

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

correct output
IMPOSSIBLE

user output
1 17 26 46 87 92 105 110 133 1...

Test 37

Group: 1, 2, 3, 4, 5

Verdict: ACCEPTED

input
2 1
2 1

correct output
1 2

user output
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
1 5 7 4 6 1 2 

Test 39

Group: 2, 3, 5

Verdict:

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

correct output
IMPOSSIBLE

user output
1 6 9 5 8 7 4 1 2 

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
1 5 1 4 2 

Test 41

Group: 1, 2, 3, 5

Verdict: ACCEPTED

input
4 3
1 2
3 2
4 2

correct output
IMPOSSIBLE

user output
IMPOSSIBLE

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
1 11 14 3 6 8 12 15 4 7 9 10 1...

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
1 4 8 11 34 37 44 52 69 71 100...

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
1 12 20 21 38 52 53 55 65 84 9...

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
1 7 12 17 26 31 38 54 82 88 91...

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
1 11 12 26 28 39 40 41 47 66 7...

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
1 39 43 44 48 53 3 4 7 11 17 2...

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
1 10 29 46 51 66 87 100 109 12...

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
1 18 25 33 35 55 58 59 66 73 7...