Submission #478946

#TimeUsernameProblemLanguageResultExecution timeMemory
478946IvnFJakarta Skyscrapers (APIO15_skyscraper)C++14
10 / 100
2 ms1176 KiB
#include <bits/stdc++.h> using namespace std; #define ll long long #define pb push_back #define ull unsigned long long #define fi first #define se second #define ld long double ll n, m, dist[30005]; vector<pair<ll, ll>>edge[30005]; struct struk{ ll b, p; }; struk arr[30005]; int main(){ ios_base::sync_with_stdio(0); cin.tie(0); cout.tie(0); cin >> n >> m; for(int i=1;i<=n;++i) dist[i]=4e18; for(int i=1;i<=m;++i){ cin >> arr[i].b >> arr[i].p; arr[i].b++; } for(int i=1;i<=m;++i){ for(int j=1;j<=m;++j){ if(j == i) continue; if(abs(arr[j].b - arr[i].b) % arr[i].p == 0){ edge[i].pb({j, abs(arr[j].b - arr[i].b) / arr[i].p}); } } } priority_queue<pair<ll, ll>, vector<pair<ll, ll>>, greater<pair<ll, ll>>>pq; pq.push({0, 1}); dist[1]=0; while(!pq.empty()){ ll gerak=pq.top().fi, idx=pq.top().se; pq.pop(); for(auto x:edge[idx]){ if(dist[x.fi] > gerak+x.se){ dist[x.fi] = gerak+x.se; pq.push({dist[x.fi], x.fi}); } } } cout << (dist[2] == 4e18 ? -1 : dist[2]) << '\n'; }
#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...