QOJ.ac
QOJ
ID | Problem | Submitter | Result | Time | Memory | Language | File size | Submit time | Judge time |
---|---|---|---|---|---|---|---|---|---|
#785055 | #3704. Travel | viq2347 | WA | 2ms | 7636kb | C++17 | 883b | 2024-11-26 16:44:04 | 2024-11-26 16:44:05 |
Judging History
answer
#include<bits/stdc++.h>
using namespace std;
enum{_n=100007};
u32string E[_n];
int PR[_n],SU[_n];
void del(int x)
{SU[PR[x]]=SU[x],PR[SU[x]]=PR[x];}
bitset<_n> B;
int d[_n];
int q[_n],f,e;
int main(){
cin.tie(0)->sync_with_stdio(0);
int n,m,a,b;
for(;cin>>n>>m>>a>>b;){
for(int i=1;i<=n;++i) E[i]={};
bool op=0;
for(int i=1,x,y;i<=m;++i)
cin>>x>>y,E[x]+=y,E[y]+=x,op|=
x==1&&y==n||x==n&&y==1;
int64_t ans=op?a:b;
if(op){
iota(PR+1,PR+n+1,0);
iota(SU,SU+n,1);
PR[0]=SU[n]=0;
del(1);
for(q[e=1,f=0]=1;f!=e;++f){
int u=q[f];
for(int v:E[u]) B[v]=1;
for(int v=SU[0];v;v=SU[v])
if(!B[v]) d[v]=d[u]+1,del(v),q[e++]=v;
for(int v:E[u]) B[v]=0;
}
ans=min(ans,int64_t(b)*d[n]);
}else{
for(q[e=1,f=0]=1;f!=e;++f)
for(int u=q[f];int v:E[u])
if(!d[v]) d[v]=d[u]+1,q[e++]=v;
ans=min(ans,int64_t(a)*d[n]);
}
cout<<ans<<'\n';
}
}
Details
Tip: Click on the bar to expand more detailed information
Test #1:
score: 100
Accepted
time: 2ms
memory: 7544kb
input:
3 2 1 3 1 2 2 3
output:
2
result:
ok 1 number(s): "2"
Test #2:
score: 0
Accepted
time: 1ms
memory: 7380kb
input:
3 2 2 3 1 2 2 3
output:
3
result:
ok 1 number(s): "3"
Test #3:
score: -100
Wrong Answer
time: 0ms
memory: 7636kb
input:
2 0 1 1
output:
0
result:
wrong answer 1st numbers differ - expected: '1', found: '0'