#include<bits/stdc++.h>
using namespace std;
int n,m,a,b,x,y;
bool vs[30001],vss[30001];
vector<pair<int,int>> v[30001];
priority_queue<pair<int,int>,vector<pair<int,int>>,greater<pair<int,int>>> pq;
int main(){
cin.tie(NULL)->sync_with_stdio(false);
cin>>n>>m;
for(int i=0;i<m;i++){
cin>>a>>b;
v[a].emplace_back(make_pair(b,i));
vs[a]=1;
if(i==0){
x=a;
}
else if(i==1){
y=a;
}
}
pq.emplace(make_pair(0,x));
while(!pq.empty()){
a=pq.top().first;
b=pq.top().second;
pq.pop();
if(b==y){
cout<<a;
return 0;
}
for(int i=0;i<v[b].size();i++){
if(vss[v[b][i].second]==0){
vss[v[b][i].second]=1;
for(int j=1;true;j++){
if(b+j*v[b][i].first>=n){
break;
}
if(vs[b+j*v[b][i].first]==1){
pq.emplace(make_pair(a+j,b+j*v[b][i].first));
}
}
for(int j=1;true;j++){
if(b-j*v[b][i].first<0){
break;
}
if(vs[b-j*v[b][i].first]==1){
pq.emplace(make_pair(a+j,b-j*v[b][i].first));
}
}
}
}
}
cout<<"-1";
}
| # | 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... |