제출 #155397

#제출 시각아이디문제언어결과실행 시간메모리
155397dantoh000Jakarta Skyscrapers (APIO15_skyscraper)C++14
100 / 100
217 ms26360 KiB
#include <bits/stdc++.h>
using namespace std;
typedef pair<int,int> ii;
int dist[30005];
vector<int> a[30005];
int h[30005][205];
int n,m;
int k = 200;
int s;
int e;
int main(){
    scanf("%d%d",&n,&m);
    for (int i = 0; i < m; i++){
        int b,p;
        scanf("%d%d",&b,&p);
        if (i == 0) s = b;
        if (i == 1) e = b;
        if (p > k || !h[b][p]){
            a[b].push_back(p);
        }
        if (p <= k) h[b][p] = 1;
    }
    priority_queue<ii,vector<ii>,greater<ii> > pq;
    memset(dist,-1,sizeof(dist));
    dist[s] = 0;
    pq.push(ii(0,s));
    while (pq.size()){
        ii cur = pq.top(); pq.pop();
        int d = cur.first, u = cur.second;
        if (u == e) break;
        if (dist[u] > d) continue;
        for (auto x : a[u]){
            for (int v = u-x; v >= 0; v-=x){
                if (dist[v] == -1 || dist[v] > dist[u]+(u-v)/x){
                    dist[v] = dist[u]+(u-v)/x;
                    pq.push(ii(dist[v],v));
                }
                if (h[v][x]) break;
            }
            for (int v = u+x; v < n; v+=x){
                if (dist[v] == -1 || dist[v] > dist[u]+(v-u)/x){
                    dist[v] = dist[u]+(v-u)/x;
                    pq.push(ii(dist[v],v));
                }
                if (h[v][x]) break;
            }
        }
    }
    printf("%d",dist[e]);
    return 0;


}

컴파일 시 표준 에러 (stderr) 메시지

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