QOJ.ac

QOJ

IDProblemSubmitterResultTimeMemoryLanguageFile sizeSubmit timeJudge time
#296268#6306. Chase GameSaladDays#WA 1ms3552kbC++171.6kb2024-01-02 17:21:252024-01-02 17:21:27

Judging History

你现在查看的是最新测评结果

  • [2024-01-02 17:21:27]
  • 评测
  • 测评结果:WA
  • 用时:1ms
  • 内存:3552kb
  • [2024-01-02 17:21:25]
  • 提交

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'