Submission #1124139

#TimeUsernameProblemLanguageResultExecution timeMemory
1124139hieuhuy1402Jakarta Skyscrapers (APIO15_skyscraper)C++20
100 / 100
813 ms3524 KiB
#include <bits/stdc++.h> using namespace std; typedef pair<int, int> pii; const int INF = 0x3F3F3F3F; const int MAX = 3e4 + 5; int N, M, A, B; vector<int> arr[MAX]; int dist[MAX]; bool vis[MAX]; int dijk() { fill(dist, dist + N + 1, INF); priority_queue< pii, vector<pii>, greater<pii> > pq; dist[A] = 0; pq.push({dist[A], A}); while (!pq.empty()) { pii x = pq.top(); pq.pop(); int u = x.second; if (!vis[u]) { vis[u] = true; for (int i : arr[u]) { int v; for (int j = 1; u + (i * j) < N; j++) { v = u + (i * j); if (dist[u] + j < dist[v]) { dist[v] = dist[u] + j; pq.push({dist[v], v}); } } for (int j = -1; u + (i * j) >= 0; j--) { v = u + (i * j); if (dist[u] + abs(j) < dist[v]) { dist[v] = dist[u] + abs(j); pq.push({dist[v], v}); } } } } } return dist[B]; } int main() { scanf("%d%d", &N, &M); int a, b; for (int i = 0; i < M; i++) { scanf("%d%d", &a, &b); arr[a].push_back(b); if (i == 0) { A = a; } else if (i == 1) { B = a; } } int ans = dijk(); printf("%d", ans == INF ? -1 : ans); return 0; }

Compilation message (stderr)

skyscraper.cpp: In function 'int main()':
skyscraper.cpp:52:10: warning: ignoring return value of 'int scanf(const char*, ...)' declared with attribute 'warn_unused_result' [-Wunused-result]
   52 |     scanf("%d%d", &N, &M);
      |     ~~~~~^~~~~~~~~~~~~~~~
skyscraper.cpp:55:14: warning: ignoring return value of 'int scanf(const char*, ...)' declared with attribute 'warn_unused_result' [-Wunused-result]
   55 |         scanf("%d%d", &a, &b);
      |         ~~~~~^~~~~~~~~~~~~~~~
#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...