제출 #66655

#제출 시각아이디문제언어결과실행 시간메모리
66655tincamateiJakarta Skyscrapers (APIO15_skyscraper)C++14
57 / 100
1070 ms76664 KiB
#include <bits/stdc++.h> using namespace std; const int MAX_N = 30000; vector<pair<int, int> > graph[MAX_N]; unordered_map<int, bool> doges[MAX_N]; int dist[MAX_N]; int dijkstra(int n, int src, int dest) { priority_queue<pair<int, int>, vector<pair<int, int> >, greater<pair<int, int> > > pq; memset(dist, 0x3f3f3f3f, sizeof(dist)); dist[src] = 0; pq.push(make_pair(0, src)); while(!pq.empty()) { int nod = pq.top().second, distNod = pq.top().first; pq.pop(); if(dist[nod] == distNod) { if(nod == dest) return distNod; for(auto it: graph[nod]) if(distNod + it.second < dist[it.first]) { dist[it.first] = distNod + it.second; pq.push(make_pair(dist[it.first], it.first)); } } } return -1; } int main() { int n, m, b, p, src, dest; scanf("%d%d", &n, &m); for(int i = 0; i < m; ++i) { scanf("%d%d", &b, &p); if(i == 0) src = b; if(i == 1) dest = b; doges[b][p] = true; } for(int i = 0; i < n; ++i) { for(auto it: doges[i]) { pair<int, int> doge = make_pair(i, it.first); if(it.second) { int poz = doge.first - doge.second, cost = 1; bool foundSimilar = false; while(poz >= 0 && !foundSimilar) { graph[doge.first].push_back(make_pair(poz, cost++)); if(doges[poz][doge.second]) foundSimilar = true; poz -= doge.second; } poz = doge.first + doge.second, cost = 1; foundSimilar = false; while(poz < n && !foundSimilar) { graph[doge.first].push_back(make_pair(poz, cost++)); if(doges[poz][doge.second]) foundSimilar = true; poz += doge.second; } } } } printf("%d", dijkstra(n, src, dest)); return 0; }

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

skyscraper.cpp: In function 'int main()':
skyscraper.cpp:37:8: warning: ignoring return value of 'int scanf(const char*, ...)', declared with attribute warn_unused_result [-Wunused-result]
   scanf("%d%d", &n, &m);
   ~~~~~^~~~~~~~~~~~~~~~
skyscraper.cpp:40:10: warning: ignoring return value of 'int scanf(const char*, ...)', declared with attribute warn_unused_result [-Wunused-result]
     scanf("%d%d", &b, &p);
     ~~~~~^~~~~~~~~~~~~~~~
skyscraper.cpp:73:9: warning: 'dest' may be used uninitialized in this function [-Wmaybe-uninitialized]
   printf("%d", dijkstra(n, src, dest));
   ~~~~~~^~~~~~~~~~~~~~~~~~~~~~~~~~~~~~
skyscraper.cpp:73:9: warning: 'src' may be used uninitialized in this function [-Wmaybe-uninitialized]
#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...