제출 #570144

#제출 시각아이디문제언어결과실행 시간메모리
570144SSRSEvacuation plan (IZhO18_plan)C++14
10 / 100
952 ms524288 KiB
#include <bits/stdc++.h> using namespace std; const int INF = 1000000000; int main(){ int n, m; cin >> n >> m; vector<vector<pair<int, int>>> E(n); for (int i = 0; i < m; i++){ int a, b, w; cin >> a >> b >> w; a--; b--; E[a].push_back(make_pair(w, b)); E[b].push_back(make_pair(w, a)); } int k; cin >> k; vector<int> g(k); for (int i = 0; i < k; i++){ cin >> g[i]; g[i]--; } vector<vector<int>> d(k, vector<int>(n, -1)); for (int i = 0; i < k; i++){ priority_queue<pair<int, int>, vector<pair<int, int>>, greater<pair<int, int>>> pq; pq.push(make_pair(0, g[i])); while (!pq.empty()){ int c = pq.top().first; int v = pq.top().second; pq.pop(); if (d[i][v] == -1){ d[i][v] = c; for (auto P : E[v]){ int w = P.second; if (d[i][w] == -1){ pq.push(make_pair(c + P.first, w)); } } } } } int Q; cin >> Q; for (int i = 0; i < Q; i++){ int s, t; cin >> s >> t; s--; t--; int ans = INF; for (int j = 0; j < k; j++){ ans = min(ans, d[j][s]); ans = min(ans, d[j][t]); } cout << ans << endl; } }
#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...