제출 #1360525

#제출 시각아이디문제언어결과실행 시간메모리
1360525waygonzJakarta Skyscrapers (APIO15_skyscraper)C++20
57 / 100
1096 ms22160 KiB
#include <bits/stdc++.h>
#define pii pair<int, int>

using namespace std;

int main() {
    ios_base::sync_with_stdio(0); cin.tie(0);
    int n, m;
    cin >> n >> m;
    vector<pii> a(m);
    vector<int> adj[n];
    for (auto &[x, y] : a) cin >> x >> y, adj[x].emplace_back(y);
    priority_queue<pii> pq;
    vector<int> dis(n, INT_MAX);
    map<int, bool> mp[n];
    pq.emplace(0, a[0].first);
    dis[a[0].first] = 0;
    while (!pq.empty()) {
        auto [w, u] = pq.top();
        pq.pop();
        if (u == a[1].first) break;
        if (dis[u] < -w) continue;
        for (auto d : adj[u]) {
            if (mp[u].count(d)) continue;
            int k = 0;
            for (int i = u + d; i < n; i += d) {
                mp[i][d] = true, k++;
                if (dis[i] <= -w + k) continue;
                dis[i] = -w + k;
                pq.emplace(-dis[i], i);
            }
            k = 0;
            for (int i = u - d; i >= 0; i -= d) {
                mp[i][d] = true, k++;
                if (dis[i] <= -w + k) continue;
                dis[i] = -w + k;
                pq.emplace(-dis[i], i);
            }
        }
    }
    if (dis[a[1].first] == INT_MAX) cout << -1;
    else cout << dis[a[1].first];
}
#결과 실행 시간메모리채점기 출력
결과를 불러오는 중입니다…
#결과 실행 시간메모리채점기 출력
결과를 불러오는 중입니다…
#결과 실행 시간메모리채점기 출력
결과를 불러오는 중입니다…
#결과 실행 시간메모리채점기 출력
결과를 불러오는 중입니다…
#결과 실행 시간메모리채점기 출력
결과를 불러오는 중입니다…