제출 #1200575

#제출 시각아이디문제언어결과실행 시간메모리
1200575zh_hJakarta Skyscrapers (APIO15_skyscraper)C++20
36 / 100
1097 ms32864 KiB
#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]}); } if (dis % p[j] == 0) { edge[j].pb({i, dis/p[j]}); } } } vector<lint> dist(m, 1e18+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}); } } } if (dist[1] == 1e18+1) {dist[1] = -1;} cout << dist[1] << endl; return 0; }
#Verdict Execution timeMemoryGrader output
Fetching results...
#Verdict Execution timeMemoryGrader output
Fetching results...
#Verdict Execution timeMemoryGrader output
Fetching results...
#Verdict Execution timeMemoryGrader output
Fetching results...
#Verdict Execution timeMemoryGrader output
Fetching results...