Submission #1125314

#TimeUsernameProblemLanguageResultExecution timeMemory
1125314njoopJakarta Skyscrapers (APIO15_skyscraper)C++17
0 / 100
1 ms1092 KiB
#include <bits/stdc++.h>
#define int short
#define pii pair<int, int>
using namespace std;

short MXN = 30000;
short n, m, dis[30001], b, p, d=174, st, en, cnt, cd, cb, cp, nd, nb, np;
vector<int> g[30001];
priority_queue<pii, vector<pii>, greater<pii>> pq;

signed main() {
    cin >> n >> m;
    for(int i=0; i<30001; i++) {
        dis[i] = 32700;
    }
    for(int i=0; i<m; i++) {
        cin >> b >> p;
        if(i == 0) st = b;
        if(i == 1) en = b;
        g[b].push_back(p);
    }
    pq.push({0, st});
    while(pq.size()) {
        cd = pq.top().first;
        cb = pq.top().second;
        pq.pop();
        if(cd > dis[cb]) continue;
        for(auto i: g[cb]) {
            for(int j=1; cb+(i*j) < n; j++) {
                nb = cb+(i*j);
                if(cd+j < dis[nb]) {
                    dis[nb] = cd+j;
                    pq.push({cd+j, nb});
                }
            }
            for(int j=1; cb-(i*j) >= 0; j++) {
                nb = cb-(i*j);
                if(cd+j < dis[nb]) {
                    dis[nb] = cd+j;
                    pq.push({cd+j, nb});
                }
            }
        }
    }
    if(dis[en] == 32700) cout << -1;
    else cout << dis[en];
    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...