#include<bits/stdc++.h>
using namespace std;
bool vs[30001];
int n,m,a,b,s0,s1,cnt;
unordered_map<int,vector<int>> z;
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;
z[a].emplace_back(b);
if(i==0){
s0=a;
}
if(i==1){
s1=a;
}
}
pq.emplace(make_pair(0,s0));
while(!pq.empty()){
a=pq.top().first;
b=pq.top().second;
pq.pop();
if(vs[b]==0){
vs[b]=1;
if(b==s1){
cout<<a;
return 0;
}
for(int i=0;i<z[b].size();i++){
cnt=1;
for(int j=b+z[b][i];j<n;j+=z[b][i]){
if(vs[j]==0){
pq.emplace(make_pair(a+cnt,j));
}
cnt+=1;
}
cnt=1;
for(int j=b-z[b][i];j>=0;j-=z[b][i]){
if(vs[j]==0){
pq.emplace(make_pair(a+cnt,j));
}
cnt+=1;
}
}
}
}
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... |