#include<bits/stdc++.h>
using namespace std;
bool vs[30001];
int n,m,a,b,zz[30001],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(i);
zz[i]=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=z[b][i]+zz[z[b][i]];j<n;j+=zz[z[b][i]]){
if(vs[j]==0){
pq.emplace(make_pair(a+cnt,j));
}
cnt+=1;
}
cnt=1;
for(int j=z[b][i]-zz[z[b][i]];j>=0;j-=zz[z[b][i]]){
if(vs[j]==0){
pq.emplace(make_pair(a+cnt,j));
}
}
}
}
}
}
| # | 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... |