Submission #1164280

#TimeUsernameProblemLanguageResultExecution timeMemory
1164280pacmanJakarta Skyscrapers (APIO15_skyscraper)C++20
0 / 100
1 ms1168 KiB
#include <bits/stdc++.h> #define ll long long int #define f first #define s second #define pii pair<int,int> #define pll pair<long long,long long> #define plli pair<long long int , long long int> #define pcc pair<char,char> #define pbb pair<bool,bool> #define PB push_back #define PF push_front #define MOD 1000000007 #define intxt freopen("input.txt","r",stdin) #define outtxt freopen("output.txt","w",stdout) using namespace std; const int MAXN = 3e4 + 10; const ll inf = 1e17; ll n ,m ,q1 ,q2 ,h[MAXN]; vector <pii> adj[MAXN]; set <pii> p; inline void dijkstra(ll x) { for(int i = 0 ; i <= n ; i++) { h[i] = inf; if(i == x) { h[i] = 0; } p.insert({h[i] , i}); } while(p.size()) { ll v = (*p.begin()).s; p.erase(*p.begin()); for(auto [u , w] : adj[v]) { if(h[u] > h[v] + w) { p.erase({h[u] , u}); h[u] = h[v] + w; p.insert({h[u] , u}); } } } } int main() { ios_base::sync_with_stdio(0); cin >> n >> m; ll s ,e; for(int i = 1 ; i <= m ; i++) { cin >> q1 >> q2; if(i == 1) { s = q1; } if(i == 2) { e = q2; } for(int i = 1 ; q1 + (i * q2) <= n ; i++) { adj[q1].PB({q1 + (i * q2) , i}); } for(int i = 1 ; q1 - (i * q2) >= 0 ; i++) { adj[q1].PB({q1 - (i * q2) , i}); } } dijkstra(s); cout << h[e]; } //Hello
#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...