제출 #657004

#제출 시각아이디문제언어결과실행 시간메모리
657004Ronin13Jakarta Skyscrapers (APIO15_skyscraper)C++14
57 / 100
1080 ms1416 KiB
#include <bits/stdc++.h>
#define ll long long
#define f first
#define s second
#define pii pair<int,int>
#define pll pair<ll,ll>
#define pb push_back
#define epb emplace_back
#define ull unsigned ll
using namespace std;

int main(){
    int n; cin >> n;
    int m; cin >> m;
    vector <vector <int> > g(n + 1);
    int b[m], p[m];
    for(int i = 0; i < m; i++){
        cin >> b[i] >> p[i];
        g[b[i]].pb(i);
    }
    int cur = 0;
    bool used[n + 1];
    int d[n + 1];
    fill(used, used + n + 1, false);
    fill(d, d + n, 1e9);
    d[b[0]] = 0;
    cur = b[0];
    for(int i = 1; i <= n; i++){
        if(cur == -1) continue;
        used[cur] = true;
        int mn = 1e9, mni = -1;
        for(int to : g[cur]){
            for(int j = 0; j < n; j++){
                if(used[j]) continue;
                int v = abs(cur - j);
                if(v % p[to] == 0){
                    v /= p[to];
                    d[j] = min(d[j], d[cur] + v);
                }
            }
        }
        for(int j = 0; j < n; j++){
            if(!used[j] && mn > d[j])
                mn = d[j], mni = j;
        }
        cur = mni;
    }
    if(d[b[1]] == 1e9)
        d[b[1]] = -1;
    cout << d[b[1]];
}
#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...