Submission #1256153

#TimeUsernameProblemLanguageResultExecution timeMemory
1256153namhhJakarta Skyscrapers (APIO15_skyscraper)C++20
100 / 100
121 ms25784 KiB
#include <bits/stdc++.h> using namespace std; #define pii pair<int,int> #define fi first #define se second const int N = 3e4+5; const int block = 170; int n,m,check[N][block],a[N],w[N],d[N]; vector<int>adj[N]; void dijkstra(){ for(int i = 0; i < n; i++) d[i] = 1e9; d[a[0]] = 0; priority_queue<pii,vector<pii>,greater<pii>>pq; pq.push({0,a[0]}); while(!pq.empty()){ auto[c,u] = pq.top(); pq.pop(); if(c > d[u]) continue; for(int v: adj[u]){ if(v >= block || (v < block && check[u][v] == 0)){ for(int i = u+v; i < n; i += v){ if(d[i] > d[u]+(i-u)/v){ d[i] = d[u]+(i-u)/v; pq.push({d[i],i}); } if(v < block){ if(check[i][v] == 1) break; check[i][v] = 1; } } for(int i = u-v; i >= 0; i -= v){ if(d[i] > d[u]+(u-i)/v){ d[i] = d[u]+(u-i)/v; pq.push({d[i],i}); } if(v < block){ if(check[i][v] == 1) break; check[i][v] = 1; } } } } } if(d[a[1]] > 9e8) cout << -1; else cout << d[a[1]]; } int main(){ ios_base::sync_with_stdio(false); cin.tie(NULL); cin >> n >> m; for(int i = 0; i < m; i++){ cin >> a[i] >> w[i]; adj[a[i]].push_back(w[i]); } for(int i = 0; i < n; i++){ sort(adj[i].begin(),adj[i].end()); adj[i].erase(unique(adj[i].begin(),adj[i].end()),adj[i].end()); } dijkstra(); }
#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...