제출 #1283194

#제출 시각아이디문제언어결과실행 시간메모리
1283194ayazEvacuation plan (IZhO18_plan)C++20
10 / 100
2 ms588 KiB
#include <bits/stdc++.h> using namespace std; #ifdef LOCAL #include "debug.h" #else #define debug(...) 42 #endif #define ll long long #define ld long double #define pii pair<int,int> #define all(x) (x).begin(), (x).end() #define isz(x) (int)(x.size()) const int MXN = 1020, inf = 1e9; const ll mod = 998244353, INF = 1e18; const char b = '-', r = '+'; vector<pii> g[MXN]; int a[MXN]; ll dis[MXN]; int n, m, k; void djk() { priority_queue<pii, vector<pii>, greater<pii>> pq; for (int i = 1; i <= n; i++) dis[i] = INF; for (int i = 1; i <= k; i++) { pq.push({0, a[i]}); dis[a[i]] = 0LL; } while (!pq.empty()) { auto [d_u, u] = pq.top(); pq.pop(); if (d_u != dis[u]) continue; for (auto &[v, w] : g[u]) { if (dis[v] > dis[u] + w) { dis[v] = dis[u] + w; pq.push({dis[v], v}); } } } } signed main() { ios::sync_with_stdio(false); cin.tie(nullptr); #ifdef LOCAL freopen("in.txt", "r", stdin); // freopen("out.txt", "w", stdout); freopen("err.log", "w", stderr); #endif cin >> n >> m; for (int i = 1; i <= m; i++) { int u, v, w; cin >> u >> v >> w; g[u].push_back({v, w}); g[v].push_back({u, w}); } cin >> k; for (int i = 1; i <= k; i++) cin >> a[i]; djk(); int q; cin >> q; while (q--) { int s, t; cin >> s >> t; bool ok = false; for (auto &[v, w] : g[s]) ok |= (v == t); if (ok) { cout << min(dis[s], dis[t]) << '\n'; continue; } } 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...