CSES - Datatähti 2024 loppu - Results
Submission details
Task:Polut
Sender:Laserr
Submission time:2024-01-20 16:58:54 +0200
Language:C++11
Status:READY
Result:0
Feedback
groupverdictscore
#10
#20
#30
Test results
testverdicttimegroup
#1ACCEPTED0.00 s1, 2, 3details
#2ACCEPTED0.00 s1, 2, 3details
#30.01 s1, 2, 3details
#4--1, 2, 3details
#5--1, 2, 3details
#6--1, 2, 3details
#7--1, 2, 3details
#80.00 s1, 2, 3details
#90.01 s1, 2, 3details
#100.01 s1, 2, 3details
#11--1, 2, 3details
#120.01 s2, 3details
#130.01 s2, 3details
#140.01 s2, 3details
#150.01 s2, 3details
#160.01 s2, 3details
#170.01 s2, 3details
#180.06 s3details
#190.06 s3details
#200.06 s3details
#210.06 s3details
#220.06 s3details
#230.05 s3details

Compiler report

input/code.cpp: In function 'void dfs2(int)':
input/code.cpp:21:29: warning: comparison of integer expressions of different signedness: 'std::vector<int>::size_type' {aka 'long unsigned int'} and 'int' [-Wsign-compare]
   21 |     if(e.size() + e2.size() == n && !f){
      |        ~~~~~~~~~~~~~~~~~~~~~^~~~
input/code.cpp: In function 'void dfs(int)':
input/code.cpp:47:17: warning: comparison of integer expressions of different signedness: 'std::vector<int>::size_type' {aka 'long unsigned int'} and 'int' [-Wsign-compare]
   47 |     if(e.size() == n && !f){
      |        ~~~~~~~~~^~~~

Code

#include <bits/stdc++.h>

using namespace std;

int n, m;
vector<int> v[201];
int p[201], z[201];
vector<int> e;
vector<int> e2;
bool f;
vector<int> alot;

void dfs2(int x){
    if (p[x]) return;
    p[x] = 2;
    e2.push_back(x);

    //for(int i = 1; i <= n; i++) cout << p[i] << " ";
    //cout << endl;

    if(e.size() + e2.size() == n && !f){
        cout << "YES" << endl;

        cout << e.size() << " ";
        for(auto i : e) cout << i << " ";
        cout << endl;

        cout << e2.size() << " ";
        for(auto i : e2) cout << i << " ";
        cout << endl; 
        f = true;
    }
    for(auto i : v[x]){
        dfs2(i);
    }

    p[x] = 0;
    e2.pop_back();
}

void dfs(int x){
    if(z[x]) return;
    p[x] = 1;
    z[x] = 1;
    e.push_back(x);
    
    if(e.size() == n && !f){
        cout << "YES" << endl;

        cout << e.size() << " ";
        for(auto i : e) cout << i << " ";
        cout << endl;

        cout << e2.size() << " ";
        for(auto i : e2) cout << i << " ";
        cout << endl; 
        f = true;
    }

    for(auto i : v[x]){
        dfs(i);
    }
    if(!v[x].size()) for(auto i : alot) dfs2(i);

    p[x] = 0;
    e.pop_back();
}

int main(){
    cin >> n >> m;
    set<int> s;
    for(int i = 1; i <= n; i++) s.insert(i);
    for(int i = 0; i < m; i++){
        int a, b;
        cin >> a >> b;
        v[a].push_back(b);
        s.erase(b);
    }
    for(auto i : s) alot.push_back(i);
    if (alot.size() > 2){
        cout << "NO" << endl;
        return 0;
    }
    for(auto i : alot) {
        for(int j = 0; j <= 200; j++)z[j] = 0;
        dfs(i);
    }  
    if(!f) cout << "NO" << endl;
}

Test details

Test 1

Group: 1, 2, 3

Verdict: ACCEPTED

input
2 0

correct output
YES
1 2 
1 1 

user output
YES
1 1 
1 2 

Test 2

Group: 1, 2, 3

Verdict: ACCEPTED

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

correct output
YES
2 2 5 
3 1 3 4 

user output
YES
4 1 3 4 5 
1 2 

Test 3

Group: 1, 2, 3

Verdict:

input
200 300
74 145
156 176
192 168
141 133
...

correct output
YES
87 200 136 117 13 169 22 187 1...

user output
NO

Test 4

Group: 1, 2, 3

Verdict:

input
200 500
37 119
47 10
17 31
130 28
...

correct output
YES
90 84 70 170 117 129 17 31 186...

user output
(empty)

Test 5

Group: 1, 2, 3

Verdict:

input
200 500
79 1
104 127
31 38
83 85
...

correct output
YES
7 70 186 22 171 36 40 135 
193 41 91 25 42 160 83 2 173 5...

user output
(empty)

Test 6

Group: 1, 2, 3

Verdict:

input
200 500
145 50
4 102
136 55
148 34
...

correct output
YES
109 70 125 78 128 170 126 184 ...

user output
(empty)

Test 7

Group: 1, 2, 3

Verdict:

input
200 500
44 38
198 85
69 167
74 39
...

correct output
NO

user output
(empty)

Test 8

Group: 1, 2, 3

Verdict:

input
200 500
41 93
98 4
171 72
127 166
...

correct output
YES
88 76 116 195 197 82 42 130 46...

user output
NO

Test 9

Group: 1, 2, 3

Verdict:

input
192 494
17 148
82 57
100 152
38 102
...

correct output
YES
154 191 183 77 3 173 83 112 15...

user output
NO

Test 10

Group: 1, 2, 3

Verdict:

input
193 497
24 110
17 193
129 117
23 186
...

correct output
YES
24 156 123 30 189 95 34 5 96 1...

user output
NO

Test 11

Group: 1, 2, 3

Verdict:

input
194 500
57 158
23 40
31 50
189 121
...

correct output
YES
27 168 116 136 175 180 12 89 6...

user output
(empty)

Test 12

Group: 2, 3

Verdict:

input
10000 15000
8243 3033
3299 579
4920 2342
2816 7811
...

correct output
YES
9236 3099 5585 9185 7222 9342 ...

user output
(empty)

Error:
terminate called after throwing an instance of 'std::bad_alloc'
  what():  std::bad_alloc

Test 13

Group: 2, 3

Verdict:

input
10000 20000
6246 3603
5105 3531
6953 4682
2625 3510
...

correct output
YES
8734 5847 7473 5388 4872 4557 ...

user output
(empty)

Test 14

Group: 2, 3

Verdict:

input
10000 20000
5853 1019
2465 2936
2022 3609
9429 4118
...

correct output
YES
5204 3987 6388 4732 4403 7869 ...

user output
(empty)

Test 15

Group: 2, 3

Verdict:

input
10000 20000
3439 3806
9336 5210
7784 848
5162 9830
...

correct output
NO

user output
(empty)

Test 16

Group: 2, 3

Verdict:

input
10000 20000
8908 287
2525 6024
1851 844
72 6898
...

correct output
YES
2487 3806 7839 4969 2661 4199 ...

user output
(empty)

Test 17

Group: 2, 3

Verdict:

input
7621 19995
6223 473
4893 990
5326 3614
421 591
...

correct output
YES
6340 5076 2779 1201 7053 1720 ...

user output
(empty)

Error:
terminate called after throwing an instance of 'std::bad_alloc'
  what():  std::bad_alloc

Test 18

Group: 3

Verdict:

input
200000 300000
17151 175317
68698 43101
190738 54240
105443 37722
...

correct output
YES
163946 182154 120966 26194 771...

user output
(empty)

Error:
terminate called after throwing an instance of 'std::bad_alloc'
  what():  std::bad_alloc

Test 19

Group: 3

Verdict:

input
200000 500000
128290 197429
67543 48696
156347 40114
114481 197
...

correct output
YES
30833 112330 10351 23335 11682...

user output
(empty)

Test 20

Group: 3

Verdict:

input
200000 500000
93623 55553
60858 72598
15531 30650
196624 28459
...

correct output
YES
99923 156477 12892 147937 1060...

user output
(empty)

Error:
terminate called after throwing an instance of 'std::bad_alloc'
  what():  std::bad_alloc

Test 21

Group: 3

Verdict:

input
200000 500000
76457 8199
163450 19462
107840 24269
178642 128924
...

correct output
NO

user output
(empty)

Test 22

Group: 3

Verdict:

input
200000 500000
181062 44502
115318 176115
33437 57568
163325 17752
...

correct output
YES
141551 129409 52010 108449 242...

user output
(empty)

Test 23

Group: 3

Verdict:

input
190479 499998
113031 136485
5993 50604
19834 84581
39043 93744
...

correct output
YES
170843 113031 163271 166394 43...

user output
(empty)

Error:
terminate called after throwing an instance of 'std::bad_alloc'
  what():  std::bad_alloc