Submission #868807

#TimeUsernameProblemLanguageResultExecution timeMemory
86880712345678Evacuation plan (IZhO18_plan)C++17
22 / 100
4054 ms10440 KiB
#include <bits/stdc++.h> using namespace std; const int nx=1e5+5; int n, m, u, v, w, k, x, q, s, t, mn[nx]; vector<pair<int, int>> d[nx]; priority_queue<pair<int, int>, vector<pair<int, int>>, greater<pair<int, int>>> pq; vector<bool> vss(nx); int main() { cin.tie(NULL)->sync_with_stdio(false); cin>>n>>m; for (int i=1; i<=m; i++) cin>>u>>v>>w, d[u].push_back({v, w}), d[v].push_back({u, w}); for (int i=1; i<=n; i++) mn[i]=1e9; cin>>k; for (int i=1; i<=k; i++) cin>>x, mn[x]=0, pq.push({0, x}); while (!pq.empty()) { auto [cw, cl]=pq.top(); vss[cl]=1; pq.pop(); for (auto [nl, nw]:d[cl]) if (cw+nw<mn[nl]&&!vss[nl]) mn[nl]=cw+nw, pq.push({cw+nw, nl}); } cin>>q; while (q--) { cin>>s>>t; vector<int> dp(n+1); vector<bool> vs(n+1); dp[s]=mn[s]; vs[s]=1; pq.push({dp[s], s}); while (!pq.empty()) { auto [cw, cl]=pq.top(); vss[cl]=1; pq.pop(); for (auto [nl, nw]:d[cl]) if (min(dp[cl], mn[nl])>dp[nl]&&!vs[nl]) dp[nl]=min(dp[cl], mn[nl]), pq.push({min(dp[cl], mn[nl]), nl}); } cout<<dp[t]<<'\n'; } }
#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...