QOJ.ac
QOJ
ID | Problem | Submitter | Result | Time | Memory | Language | File size | Submit time | Judge time |
---|---|---|---|---|---|---|---|---|---|
#296268 | #6306. Chase Game | SaladDays# | WA | 1ms | 3552kb | C++17 | 1.6kb | 2024-01-02 17:21:25 | 2024-01-02 17:21:27 |
Judging History
answer
#include <bits/stdc++.h>
#define ll long long
#define int long long
using namespace std;
const int INF=1e18;
void solve() {
int n,m,k,d;cin>>n>>m>>k>>d;
vector<vector<int>>pth(n+1);
vector<int>disn(n+1),disk(n+1),nu(n+1),dis1(n+1);
for(int i=1;i<=m;i++){
int u,v;cin>>u>>v;
pth[u].push_back(v);
pth[v].push_back(u);
}
auto bfs=[&](int pos,vector<int>&di){
queue<int>q;
q.push(pos);fill(di.begin(),di.end(),INF);
di[pos]=0;
while(!q.empty()){
int po=q.front();q.pop();
for(auto &i:pth[po]){
if(di[i]==INF){
di[i]=di[po]+1;
q.push(i);
}
}
}
};
bfs(n,disn);
bfs(k,disk);
nu[0]=d;
for(int i=1;i<=n;i++){
nu[i]=nu[i-1]+(d-i%d);
}
int ans=INF;
priority_queue<pair<int,int>>q;
q.push({0,1});fill(dis1.begin(),dis1.end(),INF);
dis1[1]=0;
while(!q.empty()){
int di=q.top().first,pos=q.top().second;q.pop();
if(di>dis1[pos])continue;
for(auto &i:pth[pos]){
int len=disk[i];
if(len>=d){
ans=min(ans,dis1[pos]+nu[disn[i]]);
}else{
if(dis1[i]>dis1[pos]+d-len){
dis1[i]=dis1[pos]+d-len;
q.push({dis1[i],i});
}
}
}
}
cout<<ans<<endl;
}
signed main() {
#ifdef DEBUG
freopen("demo.in", "r", stdin);
freopen("demo.out", "w", stdout);
#endif
ios::sync_with_stdio(false);
cin.tie(0);cout.tie(0);
solve();
return 0;
}
Details
Tip: Click on the bar to expand more detailed information
Test #1:
score: 100
Accepted
time: 1ms
memory: 3500kb
input:
5 5 3 1 1 2 2 4 4 5 1 3 3 5
output:
2
result:
ok 1 number(s): "2"
Test #2:
score: 0
Accepted
time: 0ms
memory: 3496kb
input:
13 17 12 3 1 2 2 3 3 4 4 13 5 13 7 8 7 9 7 10 7 11 7 6 12 7 1 8 8 9 9 10 10 11 11 6 6 13
output:
7
result:
ok 1 number(s): "7"
Test #3:
score: 0
Accepted
time: 0ms
memory: 3448kb
input:
10 9 4 1 4 3 1 2 7 6 6 5 8 9 9 10 5 4 8 7 3 2
output:
9
result:
ok 1 number(s): "9"
Test #4:
score: 0
Accepted
time: 0ms
memory: 3436kb
input:
10 20 9 1 9 5 2 9 4 5 10 5 7 3 1 8 7 1 7 5 3 4 3 1 7 8 3 8 9 3 10 6 9 1 1 6 8 5 6 2 1 10 2 1
output:
1
result:
ok 1 number(s): "1"
Test #5:
score: 0
Accepted
time: 0ms
memory: 3456kb
input:
10 20 3 1 1 4 6 7 5 4 5 3 2 1 8 1 7 8 2 6 2 4 4 8 9 5 1 10 7 4 5 8 4 10 2 5 6 10 4 6 3 7 1 3
output:
1
result:
ok 1 number(s): "1"
Test #6:
score: 0
Accepted
time: 0ms
memory: 3552kb
input:
10 20 4 1 2 7 6 4 2 3 2 4 6 5 8 5 6 7 10 2 3 10 1 8 3 9 3 7 1 7 5 1 6 1 3 4 2 1 5 2 9 2 9 10
output:
2
result:
ok 1 number(s): "2"
Test #7:
score: -100
Wrong Answer
time: 0ms
memory: 3436kb
input:
10 20 1 10 10 9 2 5 7 8 7 10 10 8 8 9 5 6 3 1 6 4 7 9 2 3 3 6 2 1 8 6 5 8 7 4 4 3 2 4 4 1 9 6
output:
1000000000000000000
result:
wrong answer 1st numbers differ - expected: '24', found: '1000000000000000000'