제출 #928065

#제출 시각아이디문제언어결과실행 시간메모리
928065OAleksaJakarta Skyscrapers (APIO15_skyscraper)C++14
10 / 100
1 ms1368 KiB
#include <bits/stdc++.h> using namespace std; #define f first #define s second const int N = 30069; const int inf = 1e9; int n, m, a[N], b[N], dis[N], was[N], o[N]; vector<int> g[N]; signed main() { ios::sync_with_stdio(false); cin.tie(0); cout.tie(0); int tt = 1; //cin >> tt; while (tt--) { cin >> n >> m; for (int i = 1;i <= m;i++) { cin >> a[i] >> b[i], ++a[i]; g[a[i]].push_back(i); } for (int i = 1;i <= n;i++) dis[i] = inf; vector<int> vis; vector<int> dogos; dogos.push_back(1); dis[a[1]] = 0; while (dis[a[2]] == inf && !dogos.empty()) { auto v = dogos.back(); dogos.pop_back(); for (int i = a[v], j = dis[a[v]];i <= n;i += b[v],j++) { if (dis[i] > j) { dis[i] = j; for (auto u : g[i]) dogos.push_back(u); } } for (int i = a[v], j = dis[a[v]];i >= 1;i -= b[v],j++) { if (dis[i] > j) { dis[i] = j; for (auto u : g[i]) dogos.push_back(u); } } } if (dis[a[2]] == inf) cout << -1 << '\n'; else cout << dis[a[2]] << '\n'; } return 0; }
#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...