#include <bits/stdc++.h>
#define lint long long int
#define pb push_back
using namespace std;
int main() {
    int n, m;
    cin >> n >> m;
    vector<int> b(m), p(m);
    for (int i = 0; i < m; i ++) {
        cin >> b[i] >> p[i];
    }
    
    vector<vector<pair<int, int>>> edge(m);
    for (int i = 0; i < m-1; i ++) {
        for (int j = i+1; j < m; j ++) {
            int dis = abs(b[i]-b[j]);
            if (dis % p[i] == 0) {
                edge[i].pb({j, dis/p[i]});
                edge[j].pb({i, dis/p[i]});
            }
        }
    }
    vector<int> dist(m, 1e9+1);
    dist[0] = 0;
    vector<bool> visited(m, false);
    priority_queue<pair<int, int>> pq;
    pq.push({0, 0});
    while (!pq.empty()) {
        int v = pq.top().second;
        pq.pop();
        if (visited[v]) continue;
        visited[v] = true;
        for (auto [u, w] : edge[v]) {
            if (dist[u] > dist[v] + w) {
                dist[u] = dist[v] + w;
                pq.push({-dist[u], u});
            }
        }
    }
    cout << dist[1] << endl;
    return 0;
}
| # | 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... |