QOJ.ac

QOJ

IDProblemSubmitterResultTimeMemoryLanguageFile sizeSubmit timeJudge time
#135070#6634. Central SubsetPanC_ake#AC ✓1553ms48288kbC++202.3kb2023-08-05 11:06:572023-08-05 11:06:59

Judging History

你现在查看的是最新测评结果

  • [2023-08-10 23:21:45]
  • System Update: QOJ starts to keep a history of the judgings of all the submissions.
  • [2023-08-05 11:06:59]
  • 评测
  • 测评结果:AC
  • 用时:1553ms
  • 内存:48288kb
  • [2023-08-05 11:06:57]
  • 提交

answer

#include <bits/stdc++.h>
using namespace std;
#define endl '\n'

const int maxn = 200010;

int n, m, N, rt, cnt, d, dv;
int ont[maxn], vis[maxn], vis2[maxn], dep[maxn], fa[maxn];
vector<int> e[maxn], g[maxn];
vector<int> ans;

char *p1,*p2,buf[100000];
#define nc() (p1==p2 && (p2=(p1=buf)+fread(buf,1,100000,stdin),p1==p2)?EOF:*p1++)
int read() {
    int x=0,f=1;
    char ch=nc();
    while(ch<48||ch>57)
    {
        if(ch=='-')
            f=-1;
        ch=nc();
    }
    while(ch>=48&&ch<=57)
        x=x*10+ch-48,ch=nc();
   	return x*f;
}

void dfs0(int u) {
    ont[u] = 1;
    for(int v: e[u]) {
        if(ont[v]) continue;
        g[u].push_back(v);
        g[v].push_back(u);
        dfs0(v);
    }
}

void bfs(int u) {
    queue<int> q;
    q.push(u);
    dep[u] = 1;
    for(int i = 1; i <= n; i++) vis2[i] = 0;
    while(!q.empty()) {
        int u = q.front();
        q.pop();
        vis2[u] = 1;
        if(!vis[u]) {
            if(dep[u] > d) {
                dv = u;
                d = dep[u];
            }
        }
        if(dep[u] - 1 <= N && !vis[u]) {
            vis[u] = 1;
            cnt++;
        }  
        for(int v: g[u]) {
            if(vis2[v]) continue;
            fa[v] = u;
            dep[v] = dep[u] + 1;
            q.push(v);
        }
    }
}

int climb(int u) {
    for(int i = 1; i <= N; i++) u = fa[u];
    return u;
}

mt19937 rd(time(0));

void solve() {
    ans.clear();
    cnt = 0;
    n = read();
    m = read();
    N = ceil(sqrt(n));
    for(int i = 1; i <= n; i++) {
        vis[i] = dep[i] = fa[i] = ont[i] = 0;
        e[i].clear();
        g[i].clear();
    }
    for(int i = 1; i <= m; i++) {
        int u, v;
        u = read();
        v = read();
        e[u].push_back(v);
        e[v].push_back(u);
    }
    int rt = rd() % n + 1;
    dfs0(rt);
    while(true) {
        assert(ans.size() <= N);
        if(cnt == n) break;
        ans.push_back(rt);
        fa[rt] = 0;
        d = 0;
        bfs(rt);
        rt = climb(dv);
    }
    cout << ans.size() << endl;
    for(int v: ans) cout << v << " ";
    cout << endl; 
}

signed main() {
    ios::sync_with_stdio(0);
    cin.tie(0), cout.tie(0);
    int t = 1;
    t = read();
    while(t--) solve();
}

Details

Tip: Click on the bar to expand more detailed information

Test #1:

score: 100
Accepted
time: 3ms
memory: 16684kb

input:

2
4 3
1 2
2 3
3 4
6 7
1 2
2 3
3 1
1 4
4 5
5 6
6 4

output:

2
1 2 
1
4 

result:

ok correct (2 test cases)

Test #2:

score: 0
Accepted
time: 9ms
memory: 16488kb

input:

10000
15 14
13 12
5 4
9 8
11 12
15 14
10 9
14 13
2 3
2 1
6 5
10 11
3 4
7 6
8 7
6 5
2 1
2 4
4 6
2 3
3 5
10 9
8 3
9 4
5 6
5 10
3 2
5 4
2 7
1 2
4 3
2 1
2 1
2 1
2 1
9 8
9 8
5 4
1 2
6 5
3 4
3 2
7 8
7 6
2 1
1 2
14 13
3 10
5 6
2 9
11 4
2 3
2 1
8 7
13 6
5 4
5 12
6 7
4 3
7 14
16 15
2 3
2 1
6 10
6 9
6 4
9 11
...

output:

3
15 5 6 
1
4 
1
8 
1
2 
1
2 
2
6 4 
1
2 
2
9 4 
2
2 10 
1
6 
2
17 6 
2
1 3 
2
10 5 
2
9 5 
1
5 
3
1 11 10 
2
7 4 
1
2 
2
5 2 
1
8 
1
3 
2
6 4 
2
13 5 
2
4 5 
1
6 
2
14 5 
1
3 
2
10 5 
1
3 
1
6 
3
10 16 6 
2
7 5 
2
11 4 
3
11 7 6 
1
4 
1
3 
2
7 5 
2
1 3 
2
17 7 
1
7 
2
8 5 
1
2 
2
9 3 
1
3 
1
7 
2
8...

result:

ok correct (10000 test cases)

Test #3:

score: 0
Accepted
time: 20ms
memory: 16088kb

input:

100
2000 1999
529 528
885 884
1221 1222
375 374
245 244
758 757
711 710
1521 1522
1875 1874
749 750
823 822
1959 1958
1767 1766
155 154
631 632
825 824
1330 1331
457 456
1344 1343
1817 1818
413 414
582 583
1828 1827
1335 1336
654 655
162 161
1668 1667
1966 1967
1472 1471
1185 1184
518 517
1509 1510
...

output:

23
885 1955 46 1864 137 1773 228 1682 319 1591 410 1500 501 1409 592 1318 683 1227 774 1136 865 1045 976 
1
726 
12
1918 46 956 135 830 224 741 313 652 402 563 491 
5
340 1170 1047 86 107 
1
1864 
23
128 1955 46 1864 219 1773 310 1682 401 1591 492 1500 583 1409 674 1318 765 1227 856 1136 947 1045 10...

result:

ok correct (100 test cases)

Test #4:

score: 0
Accepted
time: 71ms
memory: 18156kb

input:

10
14914 14913
13959 13958
3643 3642
4582 4581
13378 13379
981 980
12901 12902
12355 12356
14692 14691
9670 9669
14632 14631
1441 1440
1367 1368
6237 6238
8297 8298
1021 1020
5096 5097
4773 4774
7778 7779
3013 3014
5536 5535
11621 11620
13904 13903
3050 3049
14179 14178
7471 7472
13380 13381
7403 74...

output:

62
13999 124 14791 371 14544 618 14297 865 14050 1112 13752 1359 13505 1606 13258 1853 13011 2100 12764 2347 12517 2594 12270 2841 12023 3088 11776 3335 11529 3582 11282 3829 11035 4076 10788 4323 10541 4570 10294 4817 10047 5064 9800 5311 9553 5558 9306 5805 9059 6052 8812 6299 8565 6546 8318 6793 ...

result:

ok correct (10 test cases)

Test #5:

score: 0
Accepted
time: 25ms
memory: 17800kb

input:

10
20000 19999
6831 6760
15763 15900
10362 10184
5821 5880
17555 17389
16708 16574
11592 11436
186 209
19380 19313
8867 8718
12100 12237
16245 16110
18464 18568
4713 4665
17412 17578
18666 18750
4360 4322
12350 12502
4054 4103
2874 2849
8097 8202
14489 14639
1056 1016
13500 13581
2435 2391
199 173
8...

output:

3
885 6126 1143 
4
12726 176 10809 5321 
3
11918 3724 11257 
4
340 10584 9863 6937 
5
13864 15169 14623 6490 1288 
4
128 15046 4075 6159 
5
296 15985 972 6581 547 
4
17329 5415 6192 2004 
5
8338 1025 14312 27 1588 
4
8790 8901 8799 3663 

result:

ok correct (10 test cases)

Test #6:

score: 0
Accepted
time: 287ms
memory: 40808kb

input:

1
200000 199999
136649 136648
44943 44944
7148 7149
50332 50333
149967 149966
28976 28975
78549 78550
178698 178697
96434 96433
7859 7858
88976 88977
23348 23347
161682 161681
125393 125392
67892 67893
73592 73593
179054 179055
110841 110842
163714 163715
7982 7981
56309 56310
196486 196485
19176 19...

output:

224
120885 449 199552 1346 198655 2243 197758 3140 196861 4037 195964 4934 195067 5831 194170 6728 193273 7625 192376 8522 191479 9419 190582 10316 189685 11213 188788 12110 187891 13007 186994 13904 186097 14801 185200 15698 184303 16595 183406 17492 182509 18389 181612 19286 180715 20183 179818 21...

result:

ok correct (1 test case)

Test #7:

score: 0
Accepted
time: 213ms
memory: 37656kb

input:

1
200000 199999
58280 58281
132016 32016
45157 45158
35446 35445
158979 58979
185831 85831
74289 174289
195645 95645
31857 131857
168766 68766
95607 95606
39817 39818
58215 158215
74893 74894
18897 118897
63013 163013
58501 58502
94475 194475
77574 77573
152977 52977
3731 103731
20407 20408
186570 8...

output:

112
87256 449 99553 1344 98658 2239 97763 3134 96868 4029 95973 4924 95078 5819 94183 6714 93288 7609 92393 8504 91498 9399 90603 10294 89708 11189 88813 12084 87918 12979 86361 13874 85466 14769 84571 15664 83676 16559 82781 17454 81886 18349 80991 19244 80096 20139 79201 21034 78306 21929 77411 22...

result:

ok correct (1 test case)

Test #8:

score: 0
Accepted
time: 59ms
memory: 29688kb

input:

1
200000 199999
84088 84001
74829 74679
40726 41179
113019 113238
112813 113025
77336 77177
60908 61208
4521 4639
144249 144094
102763 102692
112856 113070
2428 2356
114005 113754
168454 168270
114538 114311
36802 36341
170182 170306
31641 32012
92503 92395
143570 143702
6871 6715
51503 51997
140883...

output:

4
87256 149019 55837 118805 

result:

ok correct (1 test case)

Test #9:

score: 0
Accepted
time: 9ms
memory: 15396kb

input:

1000
11 19
8 11
4 11
2 11
2 3
8 3
6 1
6 4
11 5
5 3
10 8
7 10
4 7
3 9
5 1
5 7
3 6
10 1
11 7
2 9
70 109
32 69
26 15
65 46
70 62
50 23
17 16
15 31
2 23
18 11
48 57
19 29
52 42
26 31
7 1
53 66
5 69
58 20
59 38
3 4
9 53
7 56
52 66
66 28
22 51
2 6
22 35
5 28
25 51
27 13
26 56
10 50
53 56
60 48
67 33
61 23...

output:

2
7 1 
4
69 26 53 23 
2
3 23 
4
86 68 44 61 
3
18 15 53 
2
4 1 
3
25 39 41 
4
23 8 18 32 
4
64 3 75 4 
4
18 56 36 66 
3
9 13 7 
4
23 13 65 29 
2
1 2 
3
18 3 20 
3
47 38 20 
2
3 12 
2
8 14 
1
1 
3
1 21 37 
4
35 40 52 18 
3
21 7 35 
3
19 35 15 
2
7 1 
5
19 30 22 89 40 
4
39 67 19 27 
3
40 42 52 
3
16 ...

result:

ok correct (1000 test cases)

Test #10:

score: 0
Accepted
time: 5ms
memory: 16536kb

input:

100
76 104
30 11
26 40
4 59
35 21
13 44
3 73
25 39
33 35
63 9
9 19
42 47
22 32
44 35
74 68
53 12
50 41
53 52
69 40
31 49
21 14
23 21
11 48
53 67
48 74
15 24
73 47
6 62
17 33
67 48
7 22
68 46
41 39
20 1
9 71
15 67
65 56
38 68
30 9
54 26
8 47
62 56
14 61
59 20
46 64
75 46
50 49
26 25
10 70
36 27
14 29...

output:

4
68 72 54 44 
4
69 41 73 20 
4
25 33 17 21 
4
53 23 25 64 
4
2 18 29 52 
3
19 30 40 
3
41 53 9 
4
23 25 15 21 
4
82 25 60 24 
3
28 42 25 
3
77 72 75 
4
23 75 6 74 
4
73 46 85 36 
4
85 43 71 72 
4
71 22 44 48 
4
74 66 50 22 
3
14 46 51 
3
17 16 1 
4
68 88 65 27 
3
42 50 58 
4
80 22 31 68 
3
14 60 9 ...

result:

ok correct (100 test cases)

Test #11:

score: 0
Accepted
time: 572ms
memory: 41312kb

input:

1
100000 1000000
70376 68374
69858 95507
48028 59467
27775 34161
858 86059
31468 25048
21313 82671
10952 18093
89665 50624
52742 11128
33566 41507
25913 22268
72131 67543
31387 42274
37347 75248
88261 56182
98982 47735
90574 62875
51228 53905
25218 4567
78201 22017
59613 68982
37239 43727
67620 9064...

output:

146
87256 38138 11322 47055 82517 53555 28106 34416 13978 65628 31756 60356 79223 13750 13734 48879 1 19515 6675 74151 3686 52954 80531 18181 98860 4674 56719 51044 34302 66021 40584 34149 53151 56364 88402 66823 49498 8963 9455 71613 49096 36364 87200 86121 15822 8047 72634 77535 26187 61121 18551 ...

result:

ok correct (1 test case)

Test #12:

score: 0
Accepted
time: 1354ms
memory: 48288kb

input:

1
200000 200000
89381 101645
141954 180063
180085 158544
12185 82120
161570 175869
36911 151360
49966 148400
135100 143084
145185 33970
82150 111213
93727 145916
42620 157053
26848 66273
178649 76101
5033 162413
173225 34259
30781 78979
9908 187256
87177 127185
7086 26040
178611 119947
198142 154140...

output:

224
122366 101653 23323 78950 158628 15409 136239 162062 127476 156384 189550 55193 153203 75170 31529 163510 140526 79065 20830 48357 81373 188434 50749 122448 78416 61107 182756 73131 23476 105409 98085 7434 60247 82481 198262 148196 104535 2934 158346 23922 57618 102459 28448 165344 49329 131065 ...

result:

ok correct (1 test case)

Test #13:

score: 0
Accepted
time: 1553ms
memory: 29500kb

input:

1
199809 199808
197381 136472
136472 160228
160228 128766
128766 197225
197225 160133
160133 105707
105707 66465
66465 199512
199512 185463
185463 176514
176514 175293
175293 178768
178768 158873
158873 199518
199518 161400
161400 172476
172476 188761
188761 197795
197795 152286
152286 177332
177332...

output:

446
128714 136472 189537 129710 194132 176986 134556 137621 191029 120292 52474 124343 130888 115691 193842 160824 190183 191704 160083 132699 152049 123009 100072 195640 191131 176835 175061 181807 143043 193090 179516 191153 193821 169223 186567 198350 119787 194460 178886 193783 192687 181673 178...

result:

ok correct (1 test case)

Test #14:

score: 0
Accepted
time: 31ms
memory: 16032kb

input:

200
961 1663
2 1
3 1
3 20
4 1
4 7
5 1
5 41
5 60
6 1
7 1
7 49
8 1
9 1
10 1
11 1
12 1
12 32
13 1
13 59
14 1
14 3
15 1
15 12
15 52
16 1
16 12
16 63
17 1
17 10
18 1
18 36
19 1
19 26
19 29
20 1
20 60
20 63
21 1
22 1
23 1
23 3
23 27
23 39
24 1
25 1
26 1
26 58
26 60
27 1
27 22
27 36
28 1
29 1
30 1
31 1
31 ...

output:

10
664 879 96 760 160 689 253 589 324 468 
10
626 849 94 772 230 655 260 529 345 489 
12
92 885 151 795 183 730 219 605 352 565 443 456 
11
244 850 34 812 162 615 269 606 383 525 440 
9
224 927 138 821 183 609 351 570 520 
10
684 921 109 780 191 632 229 609 417 468 
11
100 889 50 759 187 701 300 599...

result:

ok correct (200 test cases)

Test #15:

score: 0
Accepted
time: 19ms
memory: 26740kb

input:

1
160000 159999
1 2
2 3
3 4
4 5
5 6
6 7
7 8
8 9
9 10
10 11
11 12
12 13
13 14
14 15
15 16
16 17
17 18
18 19
19 20
20 21
21 22
22 23
23 24
24 25
25 26
26 27
27 28
28 29
29 30
30 31
31 32
32 33
33 34
34 35
35 36
36 37
37 38
38 39
39 40
40 41
41 42
42 43
43 44
44 45
45 46
46 47
47 48
48 49
49 50
50 51
5...

output:

3
150345 2 1 

result:

ok correct (1 test case)

Test #16:

score: 0
Accepted
time: 15ms
memory: 20900kb

input:

1
1000 499500
605 964
559 738
492 518
943 284
96 23
214 486
487 262
347 436
394 422
270 113
984 149
134 203
881 328
316 643
610 922
802 67
903 194
600 584
629 62
692 370
420 442
600 563
438 452
556 785
112 809
555 241
937 635
178 746
67 900
777 247
490 842
971 12
315 60
703 467
201 13
872 503
24 201...

output:

16
345 377 863 353 842 316 330 379 136 664 67 620 984 983 288 675 

result:

ok correct (1 test case)

Test #17:

score: 0
Accepted
time: 11ms
memory: 15852kb

input:

4081
49 48
39 7
7 45
45 25
25 31
31 26
26 4
4 11
4 19
4 37
4 8
4 16
4 22
4 33
11 14
39 6
6 12
12 46
46 49
49 48
48 29
29 27
39 41
41 15
15 34
34 24
39 3
3 13
13 20
20 47
39 9
9 36
36 5
5 43
39 40
40 21
21 2
2 38
39 35
35 42
42 23
23 28
39 1
1 32
32 10
10 17
39 30
30 18
18 44
49 48
37 29
29 33
33 19
...

output:

3
9 7 39 
3
27 29 37 
3
5 44 9 
3
34 36 43 
3
29 37 16 
3
31 46 43 
3
35 28 30 
3
37 43 34 
2
5 39 
3
28 11 27 
3
4 11 43 
2
48 19 
3
7 8 28 
2
6 14 
3
25 30 44 
2
1 5 
3
2 43 37 
2
28 41 
3
32 44 8 
3
42 9 30 
2
40 23 
2
11 21 
3
5 6 19 
3
10 19 4 
3
2 17 35 
3
31 2 3 
2
26 18 
2
26 39 
2
19 33 
3
...

result:

ok correct (4081 test cases)