QOJ.ac

QOJ

IDProblemSubmitterResultTimeMemoryLanguageFile sizeSubmit timeJudge time
#135050#6634. Central SubsetPanC_ake#TL 993ms41448kbC++202.3kb2023-08-05 10:52:072023-08-05 10:52:09

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:52:09]
  • 评测
  • 测评结果:TL
  • 用时:993ms
  • 内存:41448kb
  • [2023-08-05 10:52:07]
  • 提交

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 + 10);
        if(cnt == n) break;
        ans.push_back(rt);
        fa[rt] = 0;
        d = 0;
        bfs(rt);
        rt = 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: 2ms
memory: 15212kb

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

result:

ok correct (2 test cases)

Test #2:

score: 0
Accepted
time: 8ms
memory: 16092kb

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
6 15 1 
1
1 
1
2 
1
1 
1
1 
2
7 1 
1
1 
2
8 9 
3
13 1 11 
1
14 
4
14 1 20 7 
2
2 8 
2
6 1 
1
10 
1
1 
3
14 1 9 
2
5 6 
1
2 
2
7 5 
1
19 
1
3 
1
4 
1
4 
2
12 18 
1
6 
3
3 15 8 
1
3 
2
14 10 
1
1 
1
6 
4
8 21 1 15 
2
12 13 
2
3 14 
3
15 5 13 
1
6 
1
4 
3
1 6 7 
2
12 8 
3
4 21 20 
1
7 
2
5 12 
2
6 5 ...

result:

ok correct (10000 test cases)

Test #3:

score: 0
Accepted
time: 27ms
memory: 16688kb

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:

43
1636 1 2000 47 1954 93 1908 139 1862 185 1816 231 1770 277 1724 323 1590 369 1544 415 1498 461 1452 507 1406 553 1360 599 1314 645 1268 691 1222 737 1176 783 1130 829 1084 875 1038 921 992 
1
1213 
23
1292 1001 1002 1956 1046 1912 1090 1868 1134 1824 1178 1780 1222 1736 1336 1692 1380 1648 1424 1...

result:

ok correct (100 test cases)

Test #4:

score: 0
Accepted
time: 122ms
memory: 19108kb

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:

121
6092 14914 1 14790 125 14666 249 14542 373 14418 497 14294 621 14170 745 14046 869 13922 993 13798 1117 13674 1241 13550 1365 13426 1489 13302 1613 13178 1737 13054 1861 12930 1985 12806 2109 12682 2233 12558 2357 12434 2481 12310 2605 12186 2729 12062 2853 11938 2977 11814 3101 11690 3225 11566...

result:

ok correct (10 test cases)

Test #5:

score: 0
Accepted
time: 47ms
memory: 16964kb

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:

9
5636 7289 20000 3654 19977 2557 19941 19093 18322 
12
7213 20000 11158 19870 10826 19460 9522 19318 5867 18840 4228 11555 
8
3292 20000 18476 19817 10920 19502 16488 15331 
12
591 20000 19966 19785 17111 16429 14901 11966 10313 11541 3680 11460 
11
12595 20000 19962 17518 7221 15491 6078 12963 851...

result:

ok correct (10 test cases)

Test #6:

score: 0
Accepted
time: 527ms
memory: 40076kb

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:

446
87725 200000 1 199551 450 199102 899 198653 1348 198204 1797 197755 2246 197306 2695 196857 3144 196408 3593 195959 4042 195510 4491 195061 4940 194612 5389 194163 5838 193714 6287 193265 6736 192816 7185 192367 7634 191918 8083 191469 8532 191020 8981 190571 9430 190122 9879 189673 10328 189224...

result:

ok correct (1 test case)

Test #7:

score: 0
Accepted
time: 404ms
memory: 37676kb

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:

224
87725 1 100001 100449 199553 100896 199106 101343 198659 101790 198212 102237 197765 102684 197318 103131 196871 103578 196424 104025 195977 104472 195530 104919 195083 105366 194636 105813 194189 106260 193742 106707 193295 107154 192848 107601 192401 108048 191954 108495 191507 108942 191060 1...

result:

ok correct (1 test case)

Test #8:

score: 0
Accepted
time: 83ms
memory: 29696kb

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:

13
109486 200000 63486 199002 78900 178642 176521 79690 172036 80806 132573 65085 94488 

result:

ok correct (1 test case)

Test #9:

score: 0
Accepted
time: 7ms
memory: 15252kb

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:

3
4 7 9 
6
12 34 9 39 70 54 
3
15 20 23 
6
72 71 79 1 80 39 
6
25 49 40 19 58 46 
3
3 14 5 
5
18 15 7 24 22 
5
33 50 48 38 6 
7
59 18 26 69 61 55 82 
7
51 66 76 55 64 38 22 
4
11 4 12 9 
6
18 1 7 23 31 15 
2
4 1 
5
10 15 36 24 17 
6
42 48 20 2 9 31 
3
18 19 5 
3
16 5 3 
1
4 
6
32 23 59 26 14 17 
6
4...

result:

ok correct (1000 test cases)

Test #10:

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

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:

6
66 16 12 60 40 31 
8
33 46 19 26 85 31 12 76 
6
39 10 31 48 29 20 
6
34 55 8 47 64 38 
7
69 68 29 36 11 62 53 
4
48 8 20 7 
4
44 8 25 37 
5
32 20 40 11 44 
6
16 17 41 72 44 40 
5
32 17 50 38 30 
6
55 46 25 35 18 73 
8
18 57 93 84 61 27 86 33 
8
12 68 3 47 50 22 15 39 
8
12 66 93 35 16 48 91 72 
7
...

result:

ok correct (100 test cases)

Test #11:

score: 0
Accepted
time: 993ms
memory: 41448kb

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:

290
9486 98307 78452 54438 63144 79905 54060 33357 49346 68793 39773 53189 3366 16545 49917 71110 21932 18108 39452 21626 83695 6885 7999 86549 25918 99656 30579 88653 46977 32652 83343 50934 24451 95652 25401 61959 15252 11006 87192 41612 46268 93083 36137 57307 74657 33194 37841 36478 38880 37731 ...

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: