QOJ.ac
QOJ
ID | 题目 | 提交者 | 结果 | 用时 | 内存 | 语言 | 文件大小 | 提交时间 | 测评时间 |
---|---|---|---|---|---|---|---|---|---|
#425699 | #961. Smol Vertex Cover | Kazemaru | RE | 238ms | 4108kb | C++14 | 2.2kb | 2024-05-30 15:56:09 | 2024-05-30 15:56:10 |
Judging History
answer
#include<bits/stdc++.h>
using namespace std;
#define int long long
#define f(i,j,k) for(int i=j;i<=k;++i)
#define g(i,j,k) for(int i=j;i>=k;--i)
int n,m,s,l;
inline int read(){
int x=0;char ch=getchar();
for(;'0'>ch||ch>'9';ch=getchar());
for(;'0'<=ch&&ch<='9';ch=getchar())x=(x<<3)+(x<<1)+(ch^48);
return x;
}
const int N=2020;
mt19937 rd(time(NULL)^37);
struct Flametail{
vector<int>q[N];
int a[N],st[N],sc[N],dfn[N],low[N],vis[N],n,m,s,l;
inline void init(int N){n=N;m=s=l=0;f(i,0,n*2+9)dfn[i]=vis[i]=st[i]=0,q[i].clear();}
inline void add(int x,int a,int y,int b){q[x+a*n].push_back(y+b*n);}
void tj(int x){
vis[st[++s]=x]=1;
dfn[x]=low[x]=++l;
for(int y:q[x]){
if(!dfn[y])tj(y);
if(vis[y])low[x]=min(low[x],low[y]);
}
if(dfn[x]==low[x])for(++m;st[s+1]!=x;vis[st[s--]]=0)sc[st[s]]=m;
}
inline int clac(){
f(i,1,n*2)if(!dfn[i])tj(i);
f(i,1,n){
if(sc[i]==sc[i+n])return 0;
a[i]=sc[i]>sc[i+n];
}
return 1;
}
}F;
struct Kazemaru{
vector<int>q[N];int v[N],p[N];
inline void add(int x,int y){q[x].push_back(y);q[y].push_back(x);}
int dfs(int x){
int z;v[x]=1;
shuffle(q[x].begin(),q[x].end(),rd);
for(int y:q[x])if(!p[y]){
p[x]=y;p[y]=x;return 1;
}
for(int y:q[x])if(!v[z=p[y]]){
p[x]=y;p[y]=x;p[z]=0;
if(dfs(z))return 1;
p[y]=z;p[z]=y;p[x]=0;
}
return 0;
}
inline int clac(int n,double T){
auto st=clock();int m=0;
f(i,1,n)p[i]=0;
while(clock()-st<T*CLOCKS_PER_SEC){
f(x,1,n)if(!p[x]){
f(i,1,n)v[i]=0;
m+=dfs(x);
}
}
f(i,1,n)q[i].clear();
return m;
}
}G;
int a[N][2],b[N],c[N],u[N],v[N],w[N],x,y;
inline void chk(int z){
F.init(s);
f(i,1,m)if((x=u[i])!=z&&(y=v[i])!=z){
if(b[x]+b[y]<1)exit(-1);
if(!b[x])x=y;if(!b[y])y=x;
F.add(b[x],!c[x],b[y],c[y]);
F.add(b[y],!c[y],b[x],c[x]);
}
if(!F.clac())return;
f(i,1,s)w[a[i][F.a[i]]]=1;w[z]=1;
printf("%lld\n",s+(!!z));
f(i,1,n)if(w[i])printf("%lld ",i);
exit(0);
}
signed main(){
cin>>n>>m;s=0;
f(i,1,m)G.add(u[i]=read(),v[i]=read());
G.clac(n,1.5*n*n/250000);
f(i,1,n)b[i]=w[i]=0;
f(i,1,n)if(i<(l=G.p[i])){
a[++s][0]=i;a[s][1]=l;
b[i]=b[l]=s;c[i]=0;c[l]=1;
}
f(i,0,n)chk(i);
puts("not smol");
return 0;
}
详细
Test #1:
score: 100
Accepted
time: 0ms
memory: 4100kb
input:
5 5 1 2 2 3 3 4 4 5 1 5
output:
3 1 3 5
result:
ok vertex cover of size 3
Test #2:
score: 0
Accepted
time: 0ms
memory: 3876kb
input:
5 10 1 2 1 3 1 4 1 5 2 3 2 4 2 5 3 4 3 5 4 5
output:
not smol
result:
ok not smol
Test #3:
score: 0
Accepted
time: 3ms
memory: 4000kb
input:
3 0
output:
0
result:
ok vertex cover of size 0
Test #4:
score: 0
Accepted
time: 0ms
memory: 4072kb
input:
10 10 2 5 3 8 3 10 6 9 1 4 2 6 2 3 4 6 7 10 4 7
output:
5 1 2 3 6 7
result:
ok vertex cover of size 5
Test #5:
score: 0
Accepted
time: 3ms
memory: 4024kb
input:
10 20 1 9 3 6 3 7 8 9 3 8 1 4 5 10 7 10 4 6 7 9 9 10 2 7 1 6 5 8 2 9 1 7 5 7 3 10 2 6 4 10
output:
6 1 2 6 7 8 10
result:
ok vertex cover of size 6
Test #6:
score: 0
Accepted
time: 14ms
memory: 3908kb
input:
50 100 29 49 1 43 12 49 31 46 6 42 25 29 27 37 2 39 3 43 34 43 4 38 2 40 9 14 7 20 22 31 9 42 3 31 36 49 23 33 17 18 34 47 20 36 11 24 5 17 6 29 21 22 5 41 19 28 31 37 8 47 8 42 8 28 1 48 31 41 6 32 14 36 32 42 27 47 1 40 6 30 26 49 9 44 12 22 30 46 9 11 11 28 18 32 13 15 17 44 16 29 17 42 4 21 17 2...
output:
not smol
result:
ok not smol
Test #7:
score: 0
Accepted
time: 0ms
memory: 4108kb
input:
50 300 18 29 25 33 13 27 22 38 43 50 9 47 36 43 15 33 33 36 23 39 17 46 28 35 40 49 24 26 15 30 39 43 9 48 2 4 7 20 13 21 35 40 2 46 12 22 17 33 9 49 17 32 15 28 24 32 7 38 12 32 18 37 13 30 4 24 5 22 6 17 4 26 3 13 5 29 27 34 1 12 16 22 3 14 1 21 22 27 20 49 9 34 18 36 40 42 21 33 44 45 2 49 13 37 ...
output:
not smol
result:
ok not smol
Test #8:
score: 0
Accepted
time: 11ms
memory: 4024kb
input:
50 1000 3 35 32 34 2 24 3 10 15 34 9 45 16 24 7 10 15 39 38 40 17 45 21 35 18 36 15 50 22 29 34 40 3 36 43 50 17 19 7 30 27 44 12 48 9 18 14 20 16 30 1 34 20 35 19 33 2 27 13 20 19 32 38 48 27 37 4 28 5 45 6 43 1 36 9 13 4 18 14 32 10 38 3 44 8 47 6 41 18 38 13 40 18 28 40 47 15 18 42 48 15 47 31 36...
output:
not smol
result:
ok not smol
Test #9:
score: 0
Accepted
time: 238ms
memory: 4008kb
input:
200 300 64 134 92 154 82 142 33 198 26 185 24 74 32 144 26 118 113 122 98 130 74 84 70 184 45 181 44 136 44 134 67 185 77 160 21 50 80 181 62 78 196 199 37 174 91 105 17 74 158 166 26 172 70 129 128 133 152 173 15 86 37 67 55 91 45 74 60 141 179 184 22 168 65 161 62 67 117 152 174 181 35 99 80 103 3...
output:
not smol
result:
ok not smol
Test #10:
score: 0
Accepted
time: 136ms
memory: 4028kb
input:
200 1000 19 159 64 180 15 88 82 136 22 57 92 200 86 87 176 194 57 106 116 179 101 128 27 137 41 71 35 139 48 153 177 178 80 131 9 156 29 122 101 148 88 163 90 116 16 72 8 166 100 116 97 161 19 143 78 163 23 119 104 146 91 161 52 66 183 196 29 123 84 86 41 109 65 76 82 161 138 182 108 156 35 94 101 1...
output:
not smol
result:
ok not smol
Test #11:
score: -100
Runtime Error
input:
200 5000 60 81 22 145 156 181 27 44 49 89 69 176 61 64 16 199 46 50 75 103 26 168 6 35 60 75 51 117 41 105 20 154 69 100 75 195 22 115 67 72 170 190 31 115 10 200 51 129 14 147 161 163 9 72 22 113 70 87 112 184 28 81 178 197 72 180 171 192 71 116 71 174 30 95 20 157 50 125 142 184 18 130 82 110 65 1...