제출 #1183667

#제출 시각아이디문제언어결과실행 시간메모리
1183667meicrisToll (BOI17_toll)C++17
8 / 100
3093 ms4436 KiB
#include <iostream> #include <vector> #include <queue> #include <functional> using namespace std; const int INF = 1e9; int main() { ios::sync_with_stdio(false); cin.tie(nullptr); int K, N, M, O; cin >> K >> N >> M >> O; vector<vector<pair<int, int>>> graph(N); for (int i = 0; i < M; ++i) { int a, b, c; cin >> a >> b >> c; int from_level = a / K; int to_level = b / K; if (to_level == from_level + 1) { graph[a].emplace_back(b, c); } } auto dijkstra = [&](int start, int goal) { vector<int> dist(N, INF); priority_queue<pair<int, int>, vector<pair<int, int>>, greater<>> pq; dist[start] = 0; pq.emplace(0, start); while (!pq.empty()) { auto [d, u] = pq.top(); pq.pop(); if (d > dist[u]) continue; if (u == goal) return dist[u]; for (auto &[v, cost] : graph[u]) { if (dist[v] > dist[u] + cost) { dist[v] = dist[u] + cost; pq.emplace(dist[v], v); } } } return -1; }; for (int i = 0; i < O; ++i) { int a, b; cin >> a >> b; int result = dijkstra(a, b); cout << result << '\n'; } 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...