This submission is migrated from previous version of oj.uz, which used different machine for grading. This submission may have different result if resubmitted.
#include <bits/stdc++.h>
#define f first
#define s second
using namespace std;
using pii = pair<int,int>;
struct edge{
int v, c;
};
int n,m,k,x,y,z;
int pos[30005], power[30005];
vector<edge> gph[30005];
int dis[30005];
priority_queue<pii,vector<pii>,greater<pii>> nxt;
void dijkstra() {
for (int i = 1; i <= m; i++) dis[i] = -1;
nxt.push({0,pos[1]});
while (nxt.size()) {
auto tmp = nxt.top();
nxt.pop();
if (dis[tmp.s] != -1) continue;
dis[tmp.s] = tmp.f;
for (auto i : gph[tmp.s]) nxt.push({tmp.f+i.c,i.v});
}
cout << dis[pos[2]] << "\n";
}
int main() {
cin >> m >> n;
for (int i = 1; i <= n; i++) cin >> pos[i] >> power[i];
for (int i = 1; i <= n; i++) pos[i]++;
for (int i = 1; i <= n; i++) {
for (int j = 1; j <= n; j++) {
if (i == j) continue;
if (abs(pos[i]-pos[j]) % power[i] == 0) {
gph[pos[i]].push_back({pos[j], abs(pos[i]-pos[j]) / power[i]});
}
}
}
dijkstra();
}
# | 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... |