제출 #975799

#제출 시각아이디문제언어결과실행 시간메모리
975799androJakarta Skyscrapers (APIO15_skyscraper)C++14
0 / 100
1 ms1652 KiB
#include <bits/stdc++.h> #define int long long #define ll long long using namespace std; const int N = 30005; vector<pair<ll,ll>>G[N]; vector<ll>dist(N,1e18),par(N,-1); signed main() { ios::sync_with_stdio(false); cin.tie(nullptr); int n, m; cin >> n >> m; vector<pair<int,int>> a(m); for(int i = 0; i < m; i++) { cin >> a[i].first >> a[i].second; } for(int i = 0; i < m; i++) { for(int j = 0; j < m; j++) { if(i == j) { continue; } for(int k = 0; k < 100; k++) { if(a[i].first + k * a[i].second == a[j].first) { G[i].push_back({j, k}); } if(a[i].first - k * a[i].second == a[j].first) { G[i].push_back({j, k}); } } } } priority_queue<pair<ll,ll>,vector<pair<ll,ll>>,greater<pair<ll,ll>>>pq; pq.push({0,0}); dist[0] = 0; vector<bool>vis(n+1,false); while(pq.size()) { ll d,u; tie(d,u) = pq.top(); pq.pop(); if(vis[u]) continue; vis[u] = true; for(auto X:G[u]) { if(dist[X.first] > dist[u] + X.second) { dist[X.first] = dist[u] + X.second; pq.push({dist[X.first],X.first}); par[X.first] = u; } } } cout << dist[1]; }
#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...