QOJ.ac
QOJ
ID | 题目 | 提交者 | 结果 | 用时 | 内存 | 语言 | 文件大小 | 提交时间 | 测评时间 |
---|---|---|---|---|---|---|---|---|---|
#702441 | #6634. Central Subset | lvliang | WA | 762ms | 7840kb | C++14 | 2.1kb | 2024-11-02 15:59:45 | 2024-11-02 15:59:45 |
Judging History
answer
#include <iostream>
#include <cstring>
#include <algorithm>
#include <cmath>
#define x first
#define y second
using namespace std;
const int N = 2e5 + 10;
int h[N], e[N << 1], ne[N << 1], idx;
bool vis[N];
int ans[N];
pair<int, int> pa[N];
int q[N], tt, hh;
void add(int a, int b) {
e[++idx] = b, ne[idx] = h[a], h[a] = idx;
}
void bfs(int dis, int x) {
tt = hh = 0;
q[0] = x;
int dep = -1;
int last_tt = 0;
while (hh <= tt) {
int t = q[hh++];
if (hh == N) hh = 0;
vis[t] = true;
for (int i = h[t]; i; i = ne[i]) {
int j = e[i];
if (tt == N) tt = 0;
q[++tt] = j;
}
if (hh - 1 == last_tt) {
dep++;
last_tt = tt;
}
if (dep == dis) {
break;
}
}
}
int dfs(int u, int fa, int dis) {
if (!dis) return u;
for (int i = h[u]; i; i = ne[i]) {
int j = e[i];
if (j == fa) continue;
return dfs(u, j, dis - 1);
}
return u;
}
void solve() {
int n, m;
scanf("%d%d", &n, &m);
for (int i = 1; i <= n; i++) {
pa[i].x = 0;
pa[i].y = i;
}
for (int i = 0; i < m; i++) {
int u, v;
scanf("%d%d", &u, &v);
add(u, v), add(v, u);
pa[u].x++, pa[v].x++;
}
sort(pa + 1, pa + n + 1);
int num = 0;
int sqrtn = ceil(sqrt(n));
for (int i = 1; i <= n; i++) {
if (num == sqrtn) break;
if (vis[pa[i].y]) continue;
int u = dfs(pa[i].y, -1, sqrtn);
ans[num++] = u;
bfs(sqrtn, u);
}
bool flag = 0;
for (int i = 1; i <= n; i++) {
if (!vis[i]) {
puts("-1");
return;
}
}
printf("%d\n", num);
for (int i = 0; i < num; i++) {
printf("%d ", ans[i]);
}
puts("");
}
int main() {
int T;
scanf("%d", &T);
while (T--) {
solve();
if (T) memset(h, 0, sizeof h), memset(vis, false, sizeof vis);
idx = 0;
}
return 0;
}
详细
Test #1:
score: 100
Accepted
time: 1ms
memory: 6892kb
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 4 1 2
result:
ok correct (2 test cases)
Test #2:
score: 0
Accepted
time: 163ms
memory: 7056kb
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 1 15 6 1 1 2 1 6 1 1 1 1 3 1 9 5 1 1 2 1 8 3 1 7 16 1 1 4 1 20 7 13 2 1 7 2 1 6 2 1 11 1 1 3 1 15 6 1 1 1 1 2 1 9 1 1 2 1 4 2 1 8 2 1 8 2 1 13 1 1 3 1 15 6 1 1 3 1 9 13 1 1 1 1 4 1 21 7 13 3 1 9 11 2 1 8 3 1 13 16 1 1 2 1 6 3 1 6 7 2 1 7 3 1 13 18 1 1 3 1 12...
result:
ok correct (10000 test cases)
Test #3:
score: -100
Wrong Answer
time: 762ms
memory: 7840kb
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:
-1 42 1 170 446 449 453 500 568 671 678 694 695 696 715 750 776 818 835 843 864 879 966 975 1070 1071 1218 1291 1329 1367 1370 1401 1416 1450 1572 1637 1679 1707 1724 1774 1910 1937 1938 1944 -1 -1 1 1 -1 44 1 259 276 294 336 382 404 484 559 589 789 810 834 850 877 901 916 919 928 929 938 998 1003...
result:
wrong answer Integer -1 violates the range [1, 45] (test case 1)