Submission #746066

#TimeUsernameProblemLanguageResultExecution timeMemory
746066vjudge1Cities (BOI16_cities)C++14
14 / 100
429 ms16856 KiB
#include <bits/stdc++.h> using namespace std; #define int long long vector<vector<pair<int, long long>>> g; vector<int>dijkstra(int n, int node){ vector<int> d(n, LLONG_MAX); priority_queue<pair<int, int>> pq; pq.push({0, node}); d[node] = 0; while(!pq.empty()){ int v = pq.top().second, d_v = -1 * pq.top().first; pq.pop(); if(d[v] != d_v){ continue; } for(auto edge : g[v]){ if(d[edge.first] > d[v] + edge.second){ d[edge.first] = d[v] + edge.second; pq.push({-1 * d[edge.first], edge.first}); } } } return d; } signed main() { int n, m, k; cin >> n >> k >> m; g.resize(n); vector<int> i_n(k); for (int i=0; i<k; i++) cin >> i_n[i]; for (int i=0; i<m; i++) { long long a, b, c; cin >> a >> b >> c; g[--a].push_back({--b, c}); g[b].push_back({a, c}); } vector<long long> ans(n, 0); for (int i=0; i<k; i++) { vector<int> v=dijkstra(n, i_n[i]-1); for (int j=0; j<n; j++) ans[j]+=v[j]; } long long mi=LLONG_MAX; for (int i=0; i<n; i++) mi=min(mi, ans[i]); cout << mi; }
#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...