QOJ.ac

QOJ

IDProblemSubmitterResultTimeMemoryLanguageFile sizeSubmit timeJudge time
#134972#6634. Central SubsetPanC_ake#TL 1434ms47252kbC++201.8kb2023-08-05 10:25:012023-08-05 10:25:03

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 10:25:03]
  • 评测
  • 测评结果:TL
  • 用时:1434ms
  • 内存:47252kb
  • [2023-08-05 10:25:01]
  • 提交

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], dep[maxn], fa[maxn];
vector<int> e[maxn], g[maxn];
vector<int> ans;

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 dfs1(int u, int f) {
    dep[u] = dep[f] + 1;
    if(!vis[u]) {
        if(dep[u] > d) {
            dv = u;
            d = dep[u];
        }
    }
    for(int v: g[u]) {
        if(v == f) continue;
        fa[v] = u;
        dfs1(v, u);
    }
}

void dfs2(int u, int f) {
    dep[u] = dep[f] + 1;
    if(dep[u] - 1 <= N && !vis[u]) {
        vis[u] = 1;
        cnt++;
    }
    for(int v: g[u]) {
        if(v == f) continue;
        dfs2(v, u);
    }
}

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

void solve() {
    ans.clear();
    cnt = 0;
    cin >> n >> m;
    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;
        cin >> u >> v;
        e[u].push_back(v);
        e[v].push_back(u);
    }
    dfs0(1);
    int rt = 1;
    while(true) {
        assert(ans.size() <= n);
        if(cnt == n) break;
        fa[rt] = 0;
        d = 0;
        dfs1(rt, 0);
        if(d >= N + 1) {
            rt = climb(dv);
        }
        dfs2(rt, 0);
        ans.push_back(rt);
    }
    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;
    cin >> t;
    while(t--) solve();
}

Details

Tip: Click on the bar to expand more detailed information

Test #1:

score: 100
Accepted
time: 1ms
memory: 14296kb

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:

1
2 
1
1 

result:

ok correct (2 test cases)

Test #2:

score: 0
Accepted
time: 13ms
memory: 14560kb

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:

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

result:

ok correct (10000 test cases)

Test #3:

score: 0
Accepted
time: 55ms
memory: 14516kb

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:

22
1955 46 1864 137 1773 228 1682 319 1591 410 1500 501 1409 592 1318 683 1227 774 1136 865 1045 956 
1
1 
12
956 46 867 135 778 224 689 313 600 402 511 491 
4
1170 1047 86 107 
1
1 
22
1955 46 1864 137 1773 228 1682 319 1591 410 1500 501 1409 592 1318 683 1227 774 1136 865 1045 956 
1
1 
12
956 46 ...

result:

ok correct (100 test cases)

Test #4:

score: 0
Accepted
time: 202ms
memory: 18212kb

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:

61
14791 124 14544 371 14297 618 14050 865 13803 1112 13556 1359 13309 1606 13062 1853 12815 2100 12568 2347 12321 2594 12074 2841 11827 3088 11580 3335 11333 3582 11086 3829 10839 4076 10592 4323 10345 4570 10098 4817 9851 5064 9604 5311 9357 5558 9110 5805 8863 6052 8616 6299 8369 6546 8122 6793 7...

result:

ok correct (10 test cases)

Test #5:

score: 0
Accepted
time: 57ms
memory: 17032kb

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:

2
6126 1143 
4
10809 176 8283 5321 
3
11257 3724 8040 
3
10584 9863 2703 
5
15169 14623 6490 5958 1288 
4
15046 4075 6159 2326 
4
15985 972 6581 547 
4
7843 5415 6192 2004 
4
14312 1025 1588 27 
4
8901 8799 7775 3661 

result:

ok correct (10 test cases)

Test #6:

score: 0
Accepted
time: 865ms
memory: 47252kb

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:

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

result:

ok correct (1 test case)

Test #7:

score: 0
Accepted
time: 550ms
memory: 38028kb

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
99553 449 98658 1344 97763 2239 96868 3134 95973 4029 95078 4924 94183 5819 93288 6714 92393 7609 91498 8504 90603 9399 89708 10294 88813 11189 87918 12084 87023 12979 86128 13874 85233 14769 84338 15664 83443 16559 82548 17454 81653 18349 80758 19244 79863 20139 78968 21034 78073 21929 77178 22...

result:

ok correct (1 test case)

Test #8:

score: 0
Accepted
time: 80ms
memory: 28692kb

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:

3
149019 55837 118805 

result:

ok correct (1 test case)

Test #9:

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

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:

1
8 
3
4 16 27 
2
7 4 
3
72 39 14 
3
33 32 56 
2
4 14 
3
36 24 35 
3
29 51 21 
3
69 56 3 
4
33 19 72 22 
2
18 19 
3
13 65 29 
1
2 
2
44 2 
2
21 26 
2
12 3 
2
8 17 
1
1 
3
21 39 54 
3
43 13 63 
3
22 8 19 
2
3 30 
2
35 17 
3
26 11 4 
3
69 52 41 
3
7 67 50 
2
37 14 
3
58 40 73 
2
28 33 
3
52 32 30 
3
1...

result:

ok correct (1000 test cases)

Test #10:

score: 0
Accepted
time: 0ms
memory: 15136kb

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:

3
73 30 67 
4
20 2 85 64 
3
24 4 27 
4
9 41 43 52 
3
57 13 54 
2
32 13 
2
28 49 
3
35 30 50 
3
17 48 61 
3
42 29 10 
3
50 74 78 
3
42 85 34 
4
88 64 57 10 
4
45 59 39 79 
4
86 49 7 61 
3
35 70 76 
3
45 4 42 
3
46 48 22 
4
81 80 47 54 
3
69 10 56 
3
67 2 52 
3
42 55 12 
3
38 49 32 
3
57 20 18 
3
21 2...

result:

ok correct (100 test cases)

Test #11:

score: 0
Accepted
time: 1434ms
memory: 40572kb

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:

145
34049 95904 37070 8830 88780 40389 89704 31395 5518 13966 92629 25295 79441 66804 29604 68614 8504 94958 575 52234 70034 52718 16263 76863 42235 14660 20487 81933 68992 95038 15750 20107 84175 36130 40680 448 44426 11712 27498 65291 74613 88967 75856 40562 23713 550 40831 43199 5877 61524 94083 ...

result:

ok correct (1 test case)

Test #12:

score: -100
Time Limit Exceeded

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:


result: