Submission #1177111

#TimeUsernameProblemLanguageResultExecution timeMemory
1177111tsengangJakarta Skyscrapers (APIO15_skyscraper)C++20
100 / 100
699 ms4428 KiB
#include <bits/stdc++.h> #define ll long long #define ff first #define ss second #define all(x) (x).begin(), (x).end() #define pb push_back using namespace std; int main() { ll n,m; cin >> n >> m; vector<ll>v[n+1]; ll a[m],b[m]; for(ll i = 0; i < m; i++){ cin >> a[i] >> b[i]; v[a[i]].pb(b[i]); } vector<ll>dist(n+1,1e18); set<pair<ll,ll>>st; st.insert({0,a[0]}); dist[a[0]] = 0; while(!st.empty()){ pair<ll,ll>p = *st.begin(); st.erase(p); for(auto x : v[p.ss]){ ll cur = p.ss; ll d = 0; while(cur >= 0){ if(p.ff + d < dist[cur]){ if(dist[cur]<1e18) st.erase({dist[cur],cur}); dist[cur] = p.ff+d; st.insert({dist[cur],cur}); } d++; cur-=x; } cur = p.ss; d = 0; while(cur < n){ if(p.ff + d < dist[cur]){ if(dist[cur]<1e18) st.erase({dist[cur],cur}); dist[cur] = p.ff+d; st.insert({dist[cur],cur}); } d++; cur+=x; } } } if(dist[a[1]] != 1e18) cout << dist[a[1]]; else cout << -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...