QOJ.ac
QOJ
ID | Problem | Submitter | Result | Time | Memory | Language | File size | Submit time | Judge time |
---|---|---|---|---|---|---|---|---|---|
#213359 | #6634. Central Subset | dread | WA | 13ms | 3508kb | C++14 | 1.4kb | 2023-10-14 13:53:17 | 2023-10-14 13:53:18 |
Judging History
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)