제출 #1114785

#제출 시각아이디문제언어결과실행 시간메모리
1114785sosuke악어의 지하 도시 (IOI11_crocodile)C++14
100 / 100
335 ms62620 KiB
#include <bits/stdc++.h> using namespace std; int travel_plan(int n, int m, int r[][2], int l[], int k, int p[]) { vector<vector<array<int, 2>>> adj(n); for (int i = 0; i < m; i++) { adj[r[i][0]].push_back({r[i][1], l[i]}); adj[r[i][1]].push_back({r[i][0], l[i]}); } // we use 1e9 instead of INT_MAX to prevent overflow const array<int, 2> DEF = {(int)1e9, (int)1e9}; vector<array<int, 2>> dist(n, DEF); priority_queue<array<int, 2>> pq; for (int i = 0; i < k; i++) { pq.push({0, p[i]}); dist[p[i]] = {0, 0}; } while (!pq.empty()) { auto [time, at] = pq.top(); pq.pop(); time *= -1; // undoing the negative number trick if (dist[at][1] < time) { continue; } for (const auto [nxt, weight] : adj[at]) { if (time + weight < dist[nxt][0]) { if (dist[nxt][0] < dist[nxt][1]) { pq.push({-dist[nxt][0], nxt}); } dist[nxt][1] = dist[nxt][0]; dist[nxt][0] = time + weight; } else if (time + weight < dist[nxt][1]) { dist[nxt][1] = time + weight; pq.push({-dist[nxt][1], nxt}); } } } return dist[0][1]; }

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

crocodile.cpp: In function 'int travel_plan(int, int, int (*)[2], int*, int, int*)':
crocodile.cpp:21:8: warning: structured bindings only available with '-std=c++17' or '-std=gnu++17'
   21 |   auto [time, at] = pq.top();
      |        ^
crocodile.cpp:25:19: warning: structured bindings only available with '-std=c++17' or '-std=gnu++17'
   25 |   for (const auto [nxt, weight] : adj[at]) {
      |                   ^
#Verdict Execution timeMemoryGrader output
Fetching results...
#Verdict Execution timeMemoryGrader output
Fetching results...
#Verdict Execution timeMemoryGrader output
Fetching results...