제출 #748297

#제출 시각아이디문제언어결과실행 시간메모리
748297ToxtaqVoting Cities (NOI22_votingcity)C++17
0 / 100
1086 ms196816 KiB
#include<bits/stdc++.h> using namespace std; vector<vector<pair<int, int>>>G; vector<int>cities; int main() { int n, m, k; cin >> n >> m >> k; G.resize(n + 1); for(int i = 0;i < k;++i){ int a; cin >> a; a++; cities.push_back(a); } for(int i = 0;i < m;++i){ int u, v, c; cin >> u >> v >> c; u++; v++; G[u].push_back({v, c}); } vector<vector<long long>>dist(n + 1, vector<long long>(n + 1, 1e18)); for(int i = 1;i <= n;++i){ priority_queue<pair<int, int>>pq; vector<int>check(n + 1); dist[i][i] = 0; pq.push({0, i}); while(!pq.empty()){ int cur = pq.top().second; pq.pop(); if(check[cur])continue; check[cur] = 1; for(pair<int, int> &temp: G[cur]){ int v = temp.first, w = temp.second; if(dist[i][v] > dist[i][cur] + w){ dist[i][v] = dist[i][cur] + w; pq.push({-dist[i][v], v}); } } } } int q; cin >> q; while(q--){ int s, p1, p2, p3, p4, p5; cin >> s >> p1 >> p2 >> p3 >> p4 >> p5; s++; long long mn = 1e18; for(int u : cities){ mn = min(mn, dist[s][u]); } if(mn == 1e18){ cout << -1 << '\n'; } else cout << mn << '\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...
#Verdict Execution timeMemoryGrader output
Fetching results...
#Verdict Execution timeMemoryGrader output
Fetching results...
#Verdict Execution timeMemoryGrader output
Fetching results...