QOJ.ac

QOJ

IDProblemSubmitterResultTimeMemoryLanguageFile sizeSubmit timeJudge time
#213359#6634. Central SubsetdreadWA 13ms3508kbC++141.4kb2023-10-14 13:53:172023-10-14 13:53:18

Judging History

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

  • [2023-10-14 13:53:18]
  • 评测
  • 测评结果:WA
  • 用时:13ms
  • 内存:3508kb
  • [2023-10-14 13:53:17]
  • 提交

answer

#include <bits/stdc++.h>

const int N = 2e5 + 10;
struct node {
    int x, y;
} ;

void solve() {
    int n, m;
    std::cin >> n >> m;
    std::vector < node > a(m);
    for(int i = 0; i < m; ++i) std::cin >> a[i].x >> a[i].y, --a[i].x, --a[i].y;
    int bl = sqrt(n);
    while(bl * bl < n) ++bl;
    std::vector < int > f(n + 3), p(n + 3), vis(n + 3);
    std::iota(f.begin(), f.end(), 0);
    for(int i = 0, cnt = 1, pos = 0; i < n; ++i, ++cnt) {
        if(cnt == bl + 1) cnt = 1, ++pos;
        p[i] = pos;
    }
    std::vector < int > ans;
    auto Get = [&](auto self, int x) -> int {
        return f[x] == x ? x : f[x] = self(self, f[x]);
    } ;
    for(int i = 0; i < m; ++i) {
        int X = Get(Get, p[a[i].x]), Y = Get(Get, p[a[i].y]);
        if(X == Y) continue;
        f[X] = Y;
        if(!vis[p[a[i].x]]) {
            vis[p[a[i].x]] = 1;
            ans.emplace_back(a[i].x);
        }
        if(!vis[p[a[i].y]]) {
            vis[p[a[i].y]] = 1;
            ans.emplace_back(a[i].y);
        }
    }
    if(ans.size() == 0) {
        ans.push_back(0);
    }
    std::cout << (int)ans.size() << '\n';
    for(auto x : ans) {
        std::cout << x + 1 << ' ';
    }
    std::cout << '\n';
}

int main() {
    std::cin.tie(nullptr) -> sync_with_stdio(false);
    int T = 1;
    std::cin >> T;
    while(T--) solve();
    return 0;
}

Details

Tip: Click on the bar to expand more detailed information

Test #1:

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

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

result:

ok correct (2 test cases)

Test #2:

score: -100
Wrong Answer
time: 13ms
memory: 3416kb

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:

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

result:

wrong answer Condition failed: "getMaxBfsDist(n, subset) <= csqrtn" (test case 38)