QOJ.ac
QOJ
ID | 题目 | 提交者 | 结果 | 用时 | 内存 | 语言 | 文件大小 | 提交时间 | 测评时间 |
---|---|---|---|---|---|---|---|---|---|
#421440 | #961. Smol Vertex Cover | cqbzly | TL | 1534ms | 6680kb | C++20 | 3.7kb | 2024-05-25 18:47:28 | 2024-05-25 18:47:30 |
Judging History
answer
#include<bits/stdc++.h>
#define ll long long
#define fi first
#define se second
#define pb push_back
#define inf 0x3f3f3f3f
using namespace std;
const int N=505;
int T,n,m,cnt,used[N],to[N],bl[N],fa[N],sb;
int low[N],dfn[N],num,fk[N],vs[N];
stack<int>stk;
vector<int>G[N];
vector<int>G0[N];
pair<int,int>a[N*N];
pair<int,int>p[N];
mt19937 gen(time(0));
bool dfs(int u){
used[u]=1;
shuffle(G[u].begin(),G[u].end(),gen);
for(auto v:G[u]){
if(used[v])continue;
used[v]=1;
int x=to[v];
to[u]=v,to[v]=u,to[x]=0;
if(!x||dfs(x))return 1;
to[v]=x,to[x]=v,to[u]=0;
}
return 0;
}
void init(){
for(int i=1;i<=2*cnt;i++)fa[i]=i,dfn[i]=low[i]=fk[i]=vs[i]=0,G0[i].clear();num=sb=0;
}
void add(int x,int y){
G0[x].pb(y);
}
void work(int u,int v){
if(!bl[u]){
if(v==p[bl[v]].fi)add(bl[v]+cnt,bl[v]);
else add(bl[v],bl[v]+cnt);
}
else if(!bl[v]){
if(u==p[bl[u]].fi)add(bl[u]+cnt,bl[u]);
else add(bl[u],bl[u]+cnt);
}
else{
int x=(u==p[bl[u]].se),y=(v==p[bl[v]].se);
add(bl[u]+(1-x)*cnt,bl[v]+y*cnt);
add(bl[v]+(1-y)*cnt,bl[u]+x*cnt);
}
}
void tarjan(int u){
low[u]=dfn[u]=++num,stk.push(u),vs[u]=1;
for(auto v:G0[u]){
if(!dfn[v]){
tarjan(v);
low[u]=min(low[u],low[v]);
}
else if(vs[v]){
low[u]=min(low[u],dfn[v]);
}
}
if(low[u]==dfn[u]){
int tmp=0;sb++;
do{
tmp=stk.top(),stk.pop();
fk[tmp]=sb,vs[tmp]=0;
}while(tmp!=u);
}
}
int main(){
//freopen("data.in","r",stdin);
ios::sync_with_stdio(false);
cin.tie(0),cout.tie(0);
// cin>>T;
// while(T--){
cin>>n>>m;for(int i=1;i<=n;i++)G[i].clear(),bl[i]=to[i]=0;
for(int i=1;i<=m;i++){
int u,v;cin>>u>>v;
G[u].pb(v),G[v].pb(u);
if(!to[u]&&!to[v])to[u]=v,to[v]=u;
//cout<<"edge:"<<u<<" "<<v<<"\n";
a[i]={u,v};
}
for(int k=1;k<=1000;k++){
for(int i=1;i<=n;i++){
if(!to[i]){
for(int j=1;j<=n;j++)used[j]=0;
dfs(i);
}
}
}
cnt=0;
for(int i=1;i<=n;i++){
if(to[i]&&i<to[i]){
p[++cnt]={i,to[i]};
bl[i]=bl[to[i]]=cnt;
}
}
// cout<<cnt<<"\n";
// for(int i=1;i<=cnt;i++){
// cout<<p[i].fi<<" "<<p[i].se<<"\n";
// }
init();
for(int i=1;i<=m;i++){
int u=a[i].fi,v=a[i].se;
if(bl[u]==bl[v])continue;
work(u,v);
}
for(int i=1;i<=cnt*2;i++)if(!dfn[i])tarjan(i);
bool ok=1;
for(int i=1;i<=cnt;i++)if(fk[i]==fk[i+cnt])ok=0;
if(ok){
cout<<cnt<<"\n";
for(int i=1;i<=cnt;i++){
if(fk[i]<fk[i+cnt])cout<<p[i].fi<<" ";
else cout<<p[i].se<<" ";
}
cout<<"\n";
}
else{
bool flg=0;
for(int i=1;i<=n;i++){
init();
if(to[i]){
for(int j=1;j<=m;j++){
int u=a[j].fi,v=a[j].se;
if(bl[u]==i||bl[v]==i||bl[u]==bl[v])continue;
work(u,v);
}
for(int j=1;j<=cnt*2;j++)if(!dfn[j])tarjan(j);
bool ok=1;
for(int j=1;j<=cnt;j++)if(fk[j]==fk[j+cnt])ok=0;
if(ok){
flg=1;
cout<<cnt+1<<"\n";
for(int j=1;j<=cnt;j++){
if(j==i)cout<<p[j].fi<<" "<<p[j].se<<" ";
else if(fk[j]<fk[j+cnt])cout<<p[j].fi<<" ";
else cout<<p[j].se<<" ";
}
cout<<"\n";
break;
}
}
else{
for(int j=1;j<=m;j++){
int u=a[j].fi,v=a[j].se;
if(u==i||v==i||bl[u]==bl[v])continue;
work(u,v);
}
for(int j=1;j<=cnt*2;j++)if(!dfn[j])tarjan(j);
bool ok=1;
for(int j=1;j<=cnt;j++)if(fk[j]==fk[j+cnt])ok=0;
if(ok){
flg=1;
cout<<cnt+1<<"\n";
cout<<i<<" ";
for(int j=1;j<=cnt;j++){
if(fk[j]<fk[j+cnt])cout<<p[j].fi<<" ";
else cout<<p[j].se<<" ";
}
cout<<"\n";
break;
}
}
}
if(!flg)cout<<"not smol"<<"\n";
}
// }
}
詳細信息
Test #1:
score: 100
Accepted
time: 1ms
memory: 3724kb
input:
5 5 1 2 2 3 3 4 4 5 1 5
output:
3 1 2 4
result:
ok vertex cover of size 3
Test #2:
score: 0
Accepted
time: 0ms
memory: 3696kb
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: 0ms
memory: 3756kb
input:
3 0
output:
0
result:
ok vertex cover of size 0
Test #4:
score: 0
Accepted
time: 0ms
memory: 3920kb
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: 0ms
memory: 3760kb
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 9 6 8 10 7
result:
ok vertex cover of size 6
Test #6:
score: 0
Accepted
time: 1ms
memory: 3716kb
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: 1ms
memory: 3700kb
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: 1ms
memory: 3776kb
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: 2ms
memory: 3720kb
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: 0ms
memory: 3716kb
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: 0
Accepted
time: 12ms
memory: 3884kb
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...
output:
not smol
result:
ok not smol
Test #12:
score: 0
Accepted
time: 5ms
memory: 3732kb
input:
500 300 201 309 17 37 39 176 416 493 86 475 163 215 127 283 122 274 107 412 7 93 294 434 335 360 50 87 364 372 55 192 341 411 236 299 286 349 79 208 137 470 141 421 21 324 4 165 232 473 367 397 400 475 30 77 177 435 116 133 115 281 416 482 198 498 300 410 173 457 176 450 157 179 402 425 219 486 39 3...
output:
147 3 4 5 6 7 176 12 354 399 17 18 20 21 22 24 202 181 30 32 34 39 43 44 242 46 86 49 50 285 52 54 55 313 60 94 64 459 67 68 73 76 78 208 81 82 85 91 92 95 96 99 101 107 395 109 110 113 183 115 116 118 120 121 122 127 128 345 159 470 140 421 403 146 370 151 152 179 158 160 258 163 353 357 173 177 48...
result:
ok vertex cover of size 147
Test #13:
score: 0
Accepted
time: 18ms
memory: 3732kb
input:
500 1000 232 237 263 478 147 353 131 318 45 109 218 452 377 436 61 326 29 372 394 484 72 374 312 449 451 461 26 113 25 188 21 282 453 484 261 295 449 489 225 422 125 168 123 449 23 211 251 484 40 185 38 304 6 337 71 142 287 356 315 413 185 411 68 111 453 457 70 187 20 183 107 361 324 466 277 483 10 ...
output:
not smol
result:
ok not smol
Test #14:
score: 0
Accepted
time: 26ms
memory: 3908kb
input:
500 5000 78 84 13 468 95 135 258 447 258 267 226 321 132 282 238 355 194 248 75 485 325 390 46 182 156 284 272 289 204 361 15 228 322 448 410 430 35 317 227 386 325 398 207 443 36 280 73 153 117 459 396 494 234 430 140 199 49 357 26 128 177 210 15 231 351 379 357 484 299 489 376 454 177 377 228 331 ...
output:
not smol
result:
ok not smol
Test #15:
score: 0
Accepted
time: 705ms
memory: 6680kb
input:
500 124750 260 435 24 351 41 342 79 458 63 342 463 485 313 372 88 486 300 435 144 440 88 480 83 373 126 356 129 486 118 416 83 138 439 447 59 222 1 162 367 487 137 286 253 261 255 451 329 461 276 328 66 184 76 441 228 492 93 396 288 420 2 424 257 318 216 342 249 474 152 200 206 485 13 332 353 406 20...
output:
not smol
result:
ok not smol
Test #16:
score: 0
Accepted
time: 0ms
memory: 3676kb
input:
20 20 12 17 15 18 14 20 3 19 11 12 5 14 6 20 2 6 13 19 6 18 3 20 13 18 8 19 1 9 4 12 1 5 10 14 10 13 10 12 7 11
output:
9 1 2 20 14 7 19 10 12 18
result:
ok vertex cover of size 9
Test #17:
score: 0
Accepted
time: 0ms
memory: 3656kb
input:
20 40 5 12 10 17 9 15 4 7 8 17 11 12 6 16 8 11 1 15 14 18 9 17 1 6 8 14 3 5 10 15 4 18 3 20 9 14 7 19 2 12 9 19 6 18 10 20 4 13 3 14 4 8 17 18 3 15 18 20 1 17 5 9 7 14 4 9 7 20 6 7 2 7 8 15 13 15 4 16 2 18
output:
10 1 7 3 13 12 16 8 9 10 18
result:
ok vertex cover of size 10
Test #18:
score: 0
Accepted
time: 0ms
memory: 3656kb
input:
20 70 3 4 4 8 7 17 2 7 5 7 3 15 1 16 5 10 13 20 10 19 7 15 8 9 6 16 11 20 18 19 3 5 6 17 1 5 9 11 4 12 15 18 1 15 18 20 5 18 8 14 1 14 10 20 8 17 7 9 13 14 6 14 11 19 4 7 5 8 13 19 4 6 6 9 2 18 10 14 2 10 6 20 12 14 10 15 2 8 1 19 14 18 11 17 3 9 16 18 1 17 11 16 6 19 7 19 13 16 8 19 7 14 12 15 1 2 ...
output:
10 1 7 3 11 10 6 8 12 13 18
result:
ok vertex cover of size 10
Test #19:
score: 0
Accepted
time: 2ms
memory: 3716kb
input:
110 50 48 64 54 66 9 76 53 54 54 99 50 100 98 100 48 83 48 63 16 103 87 110 14 110 45 57 71 103 99 103 11 54 38 110 57 102 29 110 2 107 44 110 94 100 9 46 24 32 47 88 36 57 24 34 63 100 12 48 59 103 9 15 2 103 21 57 54 62 12 103 47 108 11 107 54 106 47 75 9 64 24 95 38 100 78 107 48 60 2 9 9 59 39 4...
output:
10 107 9 103 24 57 47 48 100 54 110
result:
ok vertex cover of size 10
Test #20:
score: 0
Accepted
time: 38ms
memory: 3700kb
input:
110 300 43 59 21 78 41 53 8 37 51 55 10 58 36 81 51 105 8 104 69 101 15 84 8 29 4 69 8 83 53 54 51 54 64 69 61 69 50 53 15 46 43 47 51 108 29 69 57 81 16 18 51 109 8 99 18 37 1 43 10 96 15 95 10 14 15 107 8 50 36 51 51 78 81 94 10 66 12 51 69 102 43 63 27 81 8 72 15 44 14 53 43 54 28 69 43 68 69 108...
output:
10 8 10 15 18 21 81 53 43 51 69
result:
ok vertex cover of size 10
Test #21:
score: 0
Accepted
time: 49ms
memory: 3888kb
input:
110 700 42 93 34 45 52 109 26 102 34 100 34 43 57 87 33 34 25 88 42 50 34 62 36 95 60 106 21 87 81 87 99 106 42 56 1 8 78 87 25 48 42 43 8 68 8 104 14 42 13 34 35 109 99 109 39 42 35 102 26 106 42 57 22 42 97 102 1 95 95 100 45 102 31 102 22 34 59 87 82 96 20 106 25 69 8 77 13 25 25 63 49 96 34 57 8...
output:
10 8 25 102 34 95 42 109 87 106 96
result:
ok vertex cover of size 10
Test #22:
score: 0
Accepted
time: 1ms
memory: 3964kb
input:
200 500 9 78 21 41 6 189 106 172 73 198 124 154 71 111 24 77 3 22 193 194 143 187 147 192 11 127 35 49 5 60 139 161 52 96 14 51 28 163 57 105 12 154 155 159 153 187 130 133 71 132 15 95 5 29 119 153 78 96 117 159 69 170 180 188 147 151 28 62 3 142 52 77 1 192 62 68 75 135 8 191 145 187 114 157 91 14...
output:
100 1 93 3 4 5 178 7 191 61 10 12 91 20 15 126 100 116 81 72 162 24 25 26 41 147 45 164 32 142 49 46 167 37 38 39 190 42 43 44 47 67 78 51 52 158 55 125 127 132 62 63 64 65 174 170 128 87 73 117 135 186 163 189 137 171 84 150 86 88 89 90 145 139 193 184 104 105 106 173 122 109 144 111 112 157 118 11...
result:
ok vertex cover of size 100
Test #23:
score: 0
Accepted
time: 1ms
memory: 3900kb
input:
200 3000 109 154 86 90 5 157 30 132 114 162 133 160 88 151 40 112 33 36 76 142 69 171 81 118 115 144 65 128 33 192 178 182 44 91 51 98 94 111 29 122 62 109 8 72 122 195 165 175 74 104 116 126 94 114 139 170 6 192 168 169 67 190 59 64 110 186 62 148 49 180 33 141 81 88 102 165 1 120 116 180 33 111 34...
output:
100 1 108 3 4 119 118 35 8 103 112 11 12 186 85 184 16 49 143 19 91 61 190 23 24 25 26 27 28 29 30 31 111 128 36 189 159 191 43 172 45 46 88 48 82 51 178 53 55 78 57 58 155 60 62 169 64 165 138 141 173 70 71 73 75 115 105 80 176 83 193 86 87 89 158 157 101 187 104 133 113 114 116 179 164 147 199 161...
result:
ok vertex cover of size 100
Test #24:
score: 0
Accepted
time: 0ms
memory: 4240kb
input:
200 8000 149 157 84 176 17 73 100 132 25 181 171 200 16 35 5 78 97 126 113 171 24 184 117 143 40 108 96 192 9 139 109 179 101 161 114 127 156 167 14 161 128 156 71 190 51 183 51 140 74 104 119 151 65 71 158 174 138 161 160 192 9 158 27 67 55 162 100 102 159 174 63 81 47 195 40 148 36 121 107 181 33 ...
output:
100 1 2 162 54 5 141 7 20 139 10 11 60 79 46 129 16 73 100 19 21 86 169 24 85 178 67 28 29 30 31 32 124 105 36 37 38 98 108 41 42 59 182 148 195 126 112 183 52 62 194 57 58 61 81 185 65 75 177 69 115 190 72 118 155 80 140 83 176 135 133 89 104 91 111 164 120 192 161 130 157 109 110 116 119 117 123 1...
result:
ok vertex cover of size 100
Test #25:
score: 0
Accepted
time: 56ms
memory: 3736kb
input:
500 500 271 342 280 463 424 444 322 342 200 239 239 358 449 469 239 269 54 63 98 342 375 488 245 449 338 342 18 63 188 359 274 280 3 449 239 241 75 239 42 239 280 425 375 486 8 280 95 388 321 342 39 280 95 487 219 449 188 312 188 417 270 424 92 375 264 280 59 280 188 444 79 399 188 418 320 424 156 3...
output:
10 63 399 95 188 239 342 280 375 424 449
result:
ok vertex cover of size 10
Test #26:
score: 0
Accepted
time: 158ms
memory: 3768kb
input:
500 1000 9 316 133 491 9 89 55 82 247 480 133 364 139 317 168 411 60 168 339 365 247 279 72 488 55 160 5 339 247 343 60 81 247 483 55 76 139 494 168 374 168 215 21 339 81 500 81 374 143 391 55 207 37 55 168 253 205 391 9 92 2 168 9 70 55 441 9 278 168 335 437 488 9 396 391 411 55 318 81 161 2 247 27...
output:
10 9 55 81 488 133 139 391 168 247 339
result:
ok vertex cover of size 10
Test #27:
score: 0
Accepted
time: 291ms
memory: 3912kb
input:
500 4000 34 440 276 370 287 292 23 449 23 400 34 179 44 317 23 115 30 34 276 388 88 129 276 415 165 300 123 249 300 445 122 287 276 431 283 484 30 283 23 169 276 460 170 270 164 283 123 397 23 263 129 175 208 287 300 315 170 292 66 170 287 375 126 276 287 441 287 487 88 287 300 418 262 276 44 206 11...
output:
10 23 34 44 129 123 300 170 276 283 287
result:
ok vertex cover of size 10
Test #28:
score: 0
Accepted
time: 28ms
memory: 3744kb
input:
500 500 12 25 334 479 235 352 343 496 120 445 178 477 93 477 124 364 55 294 222 463 29 191 18 107 38 97 142 451 29 78 237 438 98 196 26 234 16 189 15 311 297 339 107 300 176 442 218 222 8 396 335 336 456 474 276 495 130 350 59 498 18 441 303 376 308 357 10 35 114 470 403 476 234 282 132 372 6 37 179...
output:
188 1 2 3 4 37 8 9 116 11 66 13 47 15 16 17 107 19 20 22 23 24 25 26 27 28 29 30 31 32 178 34 35 36 38 293 41 42 43 44 45 46 332 52 424 487 294 56 57 59 390 441 377 217 65 196 71 420 213 419 75 137 79 234 81 112 445 86 87 257 92 93 94 440 381 97 100 157 102 103 105 379 109 154 113 470 434 291 120 18...
result:
ok vertex cover of size 188
Test #29:
score: 0
Accepted
time: 1534ms
memory: 3848kb
input:
500 3000 27 174 78 179 309 321 33 313 219 225 203 316 30 149 266 270 106 350 369 463 74 433 54 398 82 296 276 430 291 419 122 412 343 427 76 163 113 398 147 482 113 263 56 411 383 396 115 149 161 276 130 207 163 297 191 283 2 68 25 419 120 414 133 409 308 321 235 476 89 176 46 130 80 113 293 405 52 ...
output:
200 1 68 210 4 190 12 247 14 16 327 351 19 20 62 23 280 25 374 27 28 222 30 32 313 371 36 37 229 42 129 46 58 48 132 50 51 400 53 398 184 56 57 324 63 253 71 72 73 433 92 76 77 78 484 80 296 469 495 395 87 176 90 498 287 172 361 242 193 199 357 106 107 437 273 249 365 112 263 315 115 464 159 444 414...
result:
ok vertex cover of size 200
Test #30:
score: -100
Time Limit Exceeded
input:
500 8000 94 339 209 235 86 449 123 181 230 282 69 341 199 324 21 194 7 72 36 379 75 234 73 84 233 379 148 377 32 56 5 264 111 453 246 475 32 96 202 433 235 328 49 298 104 346 349 427 243 484 104 380 10 477 303 318 57 90 84 347 65 442 188 212 318 323 283 404 127 463 26 490 58 160 430 456 21 147 5 35 ...