Submission #683770

#TimeUsernameProblemLanguageResultExecution timeMemory
683770speedyArdaJakarta Skyscrapers (APIO15_skyscraper)C++14
0 / 100
2 ms2388 KiB
#include "bits/stdc++.h" using namespace std; using ll = long long; const ll MAXN = 3e4+5; vector<set< ll> > adj(MAXN); vector< vector < ll > > doges(MAXN); ll dp[MAXN]; map< pair<ll, ll>, bool > done; bool visited[MAXN]; int main() { ios_base::sync_with_stdio(0); cin.tie(0); ll n, m; cin >> n >> m; ll goal, begin; for(ll i = 0; i < m; i++) { pair<ll, ll> temp; cin >> temp.first >> temp.second; if(i == 1) goal = temp.first; else if(i == 0) begin = temp.first; doges[temp.first].push_back(temp.second); } for(ll i = 0; i <= n; i++) { dp[i] = 1e9; visited[i] = false; } visited[begin] = false; dp[begin] = 0; set< pair<ll, ll> > curr; curr.insert({0, begin}); ll ans = 1e9; while(!curr.empty()) { pair<ll, ll> temp = *(curr.begin()); ll v = temp.second; ll len = temp.first; // cout << v << "\n"; curr.erase(curr.begin()); if(v == goal) ans = min(len, ans); if(!visited[v]) // Add its edges { for(ll doge : doges[v]) { //if(v == 4) // cout << doge << "\n"; //if(done[{v, doge}]) //continue; ll curr = v; ll cnt = 1; while(curr + doge < n) { if(done[{curr, curr + doge}]) break; done[{curr, curr + doge}] = true; adj[curr].insert(curr + doge); curr += doge; //cnt++; } curr = v; while(curr - doge >= 0) { if(done[{curr, curr - doge}]) break; //if(v == 4) //cout << curr << "\n"; done[{curr, curr - doge}] = true; adj[curr].insert(curr - doge); curr -= doge; //cnt++; } } } visited[v] = true; for(ll e : adj[v]) { if(dp[e] > len + 1) { curr.erase({dp[e], e}); dp[e] = len + 1; curr.insert({dp[e], e}); } } adj[v].clear(); //dp[v] = 1e9; } if(ans == 1e9) ans = -1; cout << ans << "\n"; }

Compilation message (stderr)

skyscraper.cpp: In function 'int main()':
skyscraper.cpp:57:20: warning: unused variable 'cnt' [-Wunused-variable]
   57 |                 ll cnt = 1;
      |                    ^~~
skyscraper.cpp:46:9: warning: 'goal' may be used uninitialized in this function [-Wmaybe-uninitialized]
   46 |         if(v == goal)
      |         ^~
#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...