QOJ.ac
QOJ
ID | 题目 | 提交者 | 结果 | 用时 | 内存 | 语言 | 文件大小 | 提交时间 | 测评时间 |
---|---|---|---|---|---|---|---|---|---|
#134897 | #6634. Central Subset | PlentyOfPenalty# | WA | 9ms | 7804kb | C++20 | 1.4kb | 2023-08-05 09:49:13 | 2023-08-05 09:49:14 |
Judging History
answer
#include<bits/stdc++.h>
using namespace std;
const int N=2e5;
struct edge{
int t,nxt;
}e[(N<<1)+10];
int T,n,D,m,u,v,f[N+10],be[N+10],cnt;
int fa[N+10],dep[N+10],mxd,vis[N+10],prt[N+10],sz;
char c;
int getf(int x){
return f[x]==x?x:f[x]=getf(f[x]);
}
void scan(int&x){
x=0;
while(!isdigit(c=getchar()));
while(isdigit(c))x=(x<<3)+(x<<1)+c-'0',c=getchar();
}
void add(int x,int y){
e[++cnt]=(edge){y,be[x]},be[x]=cnt;
}
void Getdep(int x,int y){
fa[x]=y,dep[x]=dep[y]+1;
for(int i=be[x];i;i=e[i].nxt)if(e[i].t!=y)Getdep(e[i].t,x);
}
void Getmx(int x){
if(!vis[x]&&dep[x]>mxd)mxd=dep[x],u=x;
for(int i=be[x];i;i=e[i].nxt)if(e[i].t!=fa[x]&&!vis[e[i].t])Getmx(e[i].t);
}
void Mark(int x,int y){
vis[x]=1;
if(y==D)return;
for(int i=be[x];i;i=e[i].nxt)if(!vis[e[i].t])Mark(e[i].t,y+1);
}
int main(){
scan(T);
while(T--){
scanf("%d%d",&n,&m),D=sqrt(n);
if(D*D<n)++D;
for(int i=1;i<=n;++i)f[i]=i,be[i]=vis[i]=0;
cnt=sz=0;
for(int i=1;i<=m;++i){
scan(u),scan(v);
if(getf(u)!=getf(v))add(u,v),add(v,u),f[f[u]]=f[v];
}
Getdep(1,0);
while(mxd=0,Getmx(1),mxd){
for(int i=1;i<=D&&fa[u];++i)u=fa[u];
prt[++sz]=u;
Mark(u,0);
}
printf("%d\n",sz);
for(int i=1;i<=sz;++i)printf("%d%c",prt[i]," \n"[i==sz]);
}
return 0;
}
/*
2
4 3
1 2
2 3
3 4
10 9
1 2
2 3
3 4
4 5
5 6
6 7
7 8
8 9
9 10
*/
详细
Test #1:
score: 100
Accepted
time: 2ms
memory: 7700kb
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:
1 2 1 1
result:
ok correct (2 test cases)
Test #2:
score: -100
Wrong Answer
time: 9ms
memory: 7804kb
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:
2 11 2 1 1 1 2 1 1 1 1 2 6 1 1 1 1 4 2 10 1 1 1 2 15 4 1 3 1 2 1 5 1 1 2 11 2 1 1 1 1 1 2 1 1 1 2 1 3 1 4 1 5 1 1 2 11 2 1 1 1 5 1 1 1 1 2 16 5 1 2 1 4 1 7 1 1 1 3 1 2 1 3 1 6 1 1 2 8 1 1 1 1 3 1 2 1 1 2 6 1 1 3 1 3 1 5 1 1 2 13 2 1 1 1 3 1 4 1 1 2 12 3 1 2 1 2 1 1 1 1 1 2 1 2 1 2 1 2 1 1 2 5 1 1 1 ...
result:
wrong answer Condition failed: "getMaxBfsDist(n, subset) <= csqrtn" (test case 34)