QOJ.ac
QOJ
ID | Problem | Submitter | Result | Time | Memory | Language | File size | Submit time | Judge time |
---|---|---|---|---|---|---|---|---|---|
#174399 | #6634. Central Subset | cada_dia_mas_insanos# | WA | 71ms | 10244kb | C++17 | 2.5kb | 2023-09-10 07:06:40 | 2023-09-10 07:06:41 |
Judging History
answer
#include <bits/stdc++.h>
using namespace std;
const int maxn = 2e5 + 10, oo = 1e9;
mt19937 rng(chrono::steady_clock::now().time_since_epoch().count());
int rand(int l, int r) {
return uniform_int_distribution<int>(l, r)(rng);
}
int n, m;
int dis[maxn], in[maxn], par[maxn];
vector <int> graph[maxn];
void bfs() {
for (int i=0; i <n; i++) dis[i]=oo,par[i]=-1;
queue <int> q;
for (int i=0; i < n; i++) if (in[i]) dis[i]=0, par[i]=-1, q.push(i);
while (!q.empty()) {
int u = q.front(); q.pop();
for(int&v : graph[u]) {
if (dis[v] > dis[u]+1) {
par[v]=u;
dis[v]=dis[u]+1;
q.push(v);
}
}
}
}
void clean() {
for (int i=0; i < n; i++) {
graph[i].clear();
in[i]=0;
par[i]=-1;
dis[i]=oo;
}
}
int main() {
ios_base::sync_with_stdio(0), cin.tie(0);
#ifdef LOCAL
freopen("input.txt", "r", stdin);
freopen("output.txt", "w", stdout);
#endif // LOCAL
int tt; cin >> tt;
while (tt--) {
cin >> n >> m;
for (int i=0; i<m; i++) {
int u, v; cin >> u >> v;
u--, v--;
graph[u].push_back(v);
graph[v].push_back(u);
}
in[0]=1;
bfs();
int limit = ceil(sqrt(n));
vector <int> taken = {0};
while (taken.size() < limit) {
int w=-1;
for (int i=0; i<n; i++) {
if (in[i]) continue;
if (w == -1 || dis[i]>dis[w]) w=i;
}
if (dis[w] <= limit) break;
if (w == -1) break;
for (int it=0; it<limit && par[w]!=-1; it++) w=par[w];
taken.push_back(w);
in[w]=1;
bfs();
}
bool ok=1;
queue <int> q;
for (int i=0; i <n; i++) dis[i]=oo;
for (int& u : taken) q.push(u), dis[u]=0;
while (!q.empty()) {
int u = q.front(); q.pop();
for(int& v : graph[u]) {
if (dis[v] > dis[u]+1) {
dis[v] = dis[u]+1;
q.push(v);
}
}
}
for (int i=0; i<n; i++) ok &= dis[i]<=limit;
if (!ok) cout << -1 << endl;
else {
cout << taken.size() << endl;
for (int& i : taken) cout << i+1 << ' ';
cout << endl;
}
clean();
}
return 0;
}
Details
Tip: Click on the bar to expand more detailed information
Test #1:
score: 100
Accepted
time: 1ms
memory: 9640kb
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 2 1 1
result:
ok correct (2 test cases)
Test #2:
score: 0
Accepted
time: 25ms
memory: 9732kb
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 11 2 1 1 2 1 2 1 1 1 1 2 1 6 1 1 2 1 4 2 1 10 1 1 4 1 15 3 4 2 1 3 2 1 2 2 1 5 1 1 3 1 11 2 1 1 1 1 2 1 2 1 1 2 1 2 2 1 3 2 1 4 2 1 5 1 1 3 1 11 2 1 1 2 1 5 1 1 1 1 5 1 16 3 4 5 2 1 2 2 1 4 2 1 7 1 1 2 1 3 2 1 2 2 1 3 3 1 6 7 1 1 2 1 8 1 1 2 1 3 2 1 2 ...
result:
ok correct (10000 test cases)
Test #3:
score: -100
Wrong Answer
time: 71ms
memory: 10244kb
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 1 1 41 1 956 434 651 173 759 259 498 813 302 43 530 840 324 64 546 854 335 74 661 554 861 79 340 666 558 82 343 864 560 668 866 83 84 344 345 561 562 669 670 867 5 1 1170 1047 745 32 1 1 -1 1 1 41 1 956 434 651 173 759 259 498 813 302 43 530 840 324 64 546 854 335 74 661 554 861 79 340 666 5...
result:
wrong answer Integer -1 violates the range [1, 45] (test case 1)