Submission #787883

#TimeUsernameProblemLanguageResultExecution timeMemory
787883andecaandeciJakarta Skyscrapers (APIO15_skyscraper)C++17
57 / 100
95 ms262144 KiB
#include <bits/stdc++.h> #define int long long #define fi first #define se second #define keish ios_base::sync_with_stdio(0); cin.tie(0); cout.tie(0) using namespace std; const int mod = 1e9 + 7; int n, m, b, p, st, ed; signed main(){ keish; cin >> n >> m; vector<vector<int>> e(n); for(int i = 0; i < m; i++){ cin >> b >> p; e[b].push_back(p); if(i == 0) st = b; if(i == 1) ed = b; } vector<vector<int>> dis(n, vector<int>(2005, -1)); queue<pair<int, int>> q; for(auto x : e[st]){ dis[st][x] = 0; q.push({st, x}); } while(!q.empty()){ auto [u, d] = q.front(); q.pop(); if(u == ed){ cout << dis[u][d] << '\n'; return 0; } if(u + d < n){ if(dis[u + d][d] == -1){ dis[u + d][d] = dis[u][d] + 1; q.push({u + d, d}); } for(auto v : e[u + d]){ if(dis[u + d][v] == -1){ dis[u + d][v] = dis[u][d] + 1; q.push({u + d, v}); } } } if(u - d >= 0){ if(dis[u - d][d] == -1){ dis[u - d][d] = dis[u][d] + 1; q.push({u - d, d}); } for(auto v : e[u - d]){ if(dis[u - d][v] == -1){ dis[u - d][v] = dis[u][d] + 1; q.push({u - d, v}); } } } } cout << -1 << '\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...