#include<bits/stdc++.h>
#define ll long long
#define ss second
#define ff first
#define pb push_back
#pragma GCC optimize("Ofast,unroll-loops,no-stack-protector,fast-math,inline")
#pragma GCC target("sse,sse2,sse3,ssse3,sse4,popcnt,lzcnt,mmx,abm,avx,avx2,fma")
const int mxn=30005;
using namespace std;
vector<int> g[mxn];
int f[mxn],d[mxn];
signed main() {
ios::sync_with_stdio(false);
cin.tie(0);
cout.tie(0);
int n,m,h,k;
cin>>n>>m;
for(int i=1; i<=m; i++) {
int x,y;
cin>>x>>y;
if(i==1) h=x;
if(i==2) k=x;
g[x].push_back(y);
}
for(int i=0; i<n; i++) f[i]=1e9;
f[h]=0;
for(int l=0; l<n; l++) {
int p,mn=1e9;
for(int i=0; i<n; i++) {
if(d[i]==0&&mn>f[i]) {
mn=f[i];
p=i;
}
}
if(p==k) break;
d[p]=1;
for(int w:g[p]) {
int t=0;
for(int j=p-w; j>=0; j-=w) {
f[j]=min(f[j],f[p]+t+1);
t++;
}
t=0;
for(int j=p+w; j<n; j+=w) {
f[j]=min(f[j],f[p]+t+1);
t++;
}
}
}
if(f[k]==1e9)
cout<<"-1";
else
cout<<f[k];
}
# | 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... |