QOJ.ac
QOJ
ID | 题目 | 提交者 | 结果 | 用时 | 内存 | 语言 | 文件大小 | 提交时间 | 测评时间 |
---|---|---|---|---|---|---|---|---|---|
#702101 | #6634. Central Subset | Soestx | WA | 22ms | 7948kb | C++23 | 1.8kb | 2024-11-02 15:18:13 | 2024-11-02 15:18:15 |
Judging History
answer
#include <bits/stdc++.h>
using namespace std;
#define int long long
#define pll pair<int,int>
#define fi first
#define se second
typedef long long LL;
typedef unsigned long long ull;
int n,m,k;
const int N=1e6+10,M=5e4,mod=998244353;
int num[N],book[N];
int res,cnt;
int h[N],e[N<<1],ne[N<<1],idx;
void add(int a,int b)
{
e[idx]=b,ne[idx]=h[a],h[a]=idx++;
}
vector<int> vt;
int fa[N];
int find_fa(int x)
{
if(x!=fa[x]) return fa[x]=find_fa(fa[x]);
return fa[x];
}
bool uni(int a,int b)
{
a=find_fa(a),b=find_fa(b);
if(a==b) return 0;
fa[a]=b;
return 1;
}
int dfs(int id,int f)
{
int dis=0;
for(int i=h[id];i!=-1;i=ne[i])
{
int j=e[i];
if(j==f) continue;
int tmp=dfs(j,id)+1;
dis=max(tmp,dis);
}
if(dis>=k)
{
vt.push_back(id);
dis=0;
}
return dis;
}
int DFS(int id)
{
DFS(2-id);
return DFS(2-id)+1;
}
void solve() {
cin>>n>>m;
k=ceil(sqrt(1.0*n));
vt.clear();
idx=0;
for(int i=1;i<=n;i++) h[i]=-1,fa[i]=i;
while(m--)
{
int a,b;
cin>>a>>b;
if(uni(a,b))
{
add(a,b),add(b,a);
}
}
int ddd;
if(dfs(1,-1)+1>=k)
vt.push_back(1);
if(!vt.size()) vt.push_back(1);
sort(vt.begin(),vt.end());
if(vt.size()>k){
ddd=DFS(1);
cout<<"-1\n";
return;
}
ddd=ddd*2+1;
cout<<vt.size()<<endl;
cout<<vt[0];
int la=vt[0];
for(int i=1;i<vt.size();i++)
{
if(vt[i]==la) continue;
la=vt[i];
cout<<" "<<vt[i];
}
cout<<endl;
}
signed main() {
ios::sync_with_stdio(false);
cin.tie(nullptr);
cout.tie(nullptr);
int T=1;
cin>>T;
while(T--)
{
solve();
}
return 0;
}
/*
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
1
6 6
1 2
2 3
3 4
4 5
5 6
6 1
1
4 3
1 2
1 3
3 4
*/
详细
Test #1:
score: 100
Accepted
time: 0ms
memory: 7908kb
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: 7ms
memory: 7728kb
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 3 7 11 1 1 1 2 1 1 1 1 3 1 3 6 1 1 2 1 4 2 3 10 1 1 4 1 5 10 15 2 1 3 1 2 2 1 5 1 1 3 3 7 11 1 1 1 1 1 2 1 1 2 1 2 2 1 3 2 1 4 2 1 5 1 1 3 3 7 11 1 1 2 1 5 1 1 1 1 4 1 6 11 16 1 2 2 1 4 3 1 4 7 1 1 2 1 3 1 2 1 3 3 1 6 7 1 1 3 1 4 8 1 1 1 3 2 1 2 1 1 2 2 6 2 1 3 1 3 2 1 5 1 1 3 3 8 13 1 1 2 1 3 2 1...
result:
ok correct (10000 test cases)
Test #3:
score: -100
Wrong Answer
time: 22ms
memory: 7948kb
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:
44 20 65 110 155 200 245 290 335 380 425 470 515 560 605 650 695 740 785 830 875 920 965 1010 1055 1100 1145 1190 1235 1280 1325 1370 1415 1460 1505 1550 1595 1640 1685 1730 1775 1820 1865 1910 1955 1 1 22 11 56 101 146 191 236 281 326 371 416 461 506 551 596 641 686 731 776 821 866 911 956 5 32 195...
result:
wrong answer Condition failed: "getMaxBfsDist(n, subset) <= csqrtn" (test case 74)