#include<bits/stdc++.h>
#define int long long
#define ss second
#define ff first
#define pb push_back
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... |