QOJ.ac
QOJ
ID | 题目 | 提交者 | 结果 | 用时 | 内存 | 语言 | 文件大小 | 提交时间 | 测评时间 |
---|---|---|---|---|---|---|---|---|---|
#187635 | #6634. Central Subset | qzzyq | WA | 9ms | 15752kb | C++14 | 2.2kb | 2023-09-24 19:21:35 | 2023-09-24 19:21:35 |
Judging History
answer
#include<bits/stdc++.h>
#define ll long long
#define ull unsigned long long
#define maxn 200005
#define put() putchar('\n')
#define Tp template<typename Ty>
#define Ts template<typename Ty,typename... Ar>
using namespace std;
void read(int &x){
int f=1;x=0;char c=getchar();
while (c<'0'||c>'9') {if (c=='-') f=-1;c=getchar();}
while (c>='0'&&c<='9') {x=x*10+c-'0';c=getchar();}
x*=f;
}
namespace Debug{
Tp void _debug(char* f,Ty t){cerr<<f<<'='<<t<<endl;}
Ts void _debug(char* f,Ty x,Ar... y){while(*f!=',') cerr<<*f++;cerr<<'='<<x<<",";_debug(f+1,y...);}
Tp ostream& operator<<(ostream& os,vector<Ty>& V){os<<"[";for(auto& vv:V) os<<vv<<",";os<<"]";return os;}
#define gdb(...) _debug((char*)#__VA_ARGS__,__VA_ARGS__)
}using namespace Debug;
#define fi first
#define se second
#define mk make_pair
const int mod=1e9+7;
int power(int x,int y=mod-2) {
int sum=1;
while (y) {
if (y&1) sum=sum*x%mod;
x=x*x%mod;y>>=1;
}
return sum;
}
int n,m;
vector<int>to[maxn];
int h[maxn],head=1;
struct yyy{
int to,z;
void add(int x,int y) {
to=y;z=h[x];h[x]=head;
}
}a[maxn*10];
int vis[maxn],ans[maxn],cnt,block,total,siz[maxn],son[maxn];
void dfs3(int x,int pre) {
int i;
vis[x]=1;siz[x]=0;son[x]=0;
for (i=h[x];i;i=a[i].z) if (!vis[a[i].to]) {
int y=a[i].to;
dfs3(y,x);
if (!son[x]||siz[y]+1>siz[x]) son[x]=y,siz[x]=siz[y]+1;
}
}
void dfs(int x,int deep) {
if (deep==0) ans[++cnt]=x,deep=block+1;
vis[x]=1;int sum=deep,i;
// dfs(son[x],deep-1);
// if (sum>=siz[son[x]]+1)
for (i=h[x];i;i=a[i].z) if (!vis[a[i].to]) {
int y=a[i].to;
dfs(y,sum-1);
if (sum>=siz[y]+1) ;
else sum=max(sum,block+1-sum);
}
}
void solve(void) {
int i,x,y;
read(n);read(m);
block=sqrt(n);block+=(block*block!=n);
for (i=1;i<=n;i++) h[i]=0,vis[i]=0,siz[i]=0;cnt=0;
for (i=1;i<=m;i++) {
read(x),read(y);
a[++head].add(x,y);
a[++head].add(y,x);
}
dfs3(1,0);
for (i=1;i<=n;i++) vis[i]=0;
dfs(1,0);
if (cnt==0) ans[cnt=1]=1;
printf("%d\n",cnt);
for (i=1;i<=cnt;i++) printf("%d ",ans[i]);put();
}
signed main(void){
++total;
int T;read(T);while (T--) solve(),++total;
return 0;
}
详细
Test #1:
score: 100
Accepted
time: 2ms
memory: 11680kb
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 1
result:
ok correct (2 test cases)
Test #2:
score: -100
Wrong Answer
time: 9ms
memory: 15752kb
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 6 11 1 1 3 1 10 6 1 1 1 1 3 1 5 9 1 1 3 1 12 6 5 1 7 8 9 15 1 1 4 1 7 13 19 3 1 7 6 3 1 6 10 4 1 11 12 13 1 1 3 1 6 11 1 1 1 1 2 1 9 1 1 2 1 4 2 1 6 3 1 12 6 2 1 14 1 1 3 1 6 11 1 1 3 1 13 6 1 1 1 1 4 1 7 13 19 4 1 9 13 11 3 1 12 6 4 1 10 14 13 1 1 2 1 5 3 1 7...
result:
wrong answer Integer 5 violates the range [1, 4] (test case 9)