Submission #1301884

#TimeUsernameProblemLanguageResultExecution timeMemory
1301884Ghulam_JunaidJakarta Skyscrapers (APIO15_skyscraper)C++20
57 / 100
1002 ms30972 KiB
#include <bits/stdc++.h> using namespace std; const int N = 3e4 + 10; int n, m, b[N], p[N]; vector<int> at[N]; map<pair<int, int>, int> dist; bool vis[N]; void f(int v){ queue<pair<int, int>> q; for (int x : at[v]){ q.push({v, x}); dist[{v, x}] = 0; } vis[v] = 1; while (!q.empty()){ auto [v, x] = q.front(); q.pop(); for (int u : {v + x, v - x}){ if (u < 0 or u >= n) continue; if (dist.find({u, x}) == dist.end()) dist[{u, x}] = 1e9; if (dist[{u, x}] > dist[{v, x}] + 1){ dist[{u, x}] = dist[{v, x}] + 1; q.push({u, x}); if (!vis[u]){ vis[u] = 1; for (int y : at[u]){ q.push({u, y}); dist[{u, y}] = dist[{u, x}]; } } } } } } int main(){ cin >> n >> m; for (int i = 0; i < m; i ++){ cin >> b[i] >> p[i], at[b[i]].push_back(p[i]); } f(b[0]); int ans = 1e9; for (auto [P, d] : dist) if (P.first == b[1] and ans > d) ans = d; if (ans == 1e9) ans = -1; cout << ans << endl; }
#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...