#include<bits/stdc++.h>
using namespace std;
#define int long long
int b[30010];
int p[30010];
int dp[30010];
priority_queue<pair<int,int>> pq;
signed main(){
int n,m;
cin>>m>>n;
for(int i=1;i<=n;i++){
cin>>b[i]>>p[i];
dp[i]=LLONG_MAX;
}
dp[1]=0;
pq.push({0,1});
while(pq.empty()==0){
int w=-pq.top().first;
int x=pq.top().second;
if(x==2)
break;
if(w!=dp[x]){
pq.pop();
continue;
}
pq.pop();
for(int i=1;i<=n;i++){
if(i==x)
continue;
if((b[i]-b[x])%p[x]==0){
if(dp[i]>abs(b[i]-b[x])/p[x]+w){
dp[i]=abs(b[i]-b[x])/p[x]+w;
pq.push({-w-dp[i],i});
}
}
}
}
if(dp[2]==LLONG_MAX){
cout<<"-1";
return 0;
}
cout<<dp[2];
return 0;
}
| # | Verdict | Execution time | Memory | Grader output |
|---|
| Fetching results... |
| # | Verdict | Execution time | Memory | Grader output |
|---|
| Fetching results... |
| # | Verdict | Execution time | Memory | Grader output |
|---|
| Fetching results... |
| # | Verdict | Execution time | Memory | Grader output |
|---|
| Fetching results... |
| # | Verdict | Execution time | Memory | Grader output |
|---|
| Fetching results... |