Submission #485804

#TimeUsernameProblemLanguageResultExecution timeMemory
485804radalCities (BOI16_cities)C++14
14 / 100
369 ms36224 KiB
#include <bits/stdc++.h> #pragma GCC optimize("O2") #pragma GCC target("avx2,fma") #define rep(i,l,r) for (int i = l; i < r; i++) #define repr(i,r,l) for (int i = r; i >= l; i--) #define X first #define Y second #define mp make_pair #define pb push_back #define endl '\n' #define debug(x) cerr << #x << " : " << x << endl; using namespace std; typedef long long ll; typedef pair<ll,int> pll; typedef pair<long double,long double> pld; const long long int N = 2e5+10,mod = 998244353,inf = 1e18,maxm = (1 << 24); inline int mkay(int a,int b){ if (a+b >= mod) return a+b-mod; if (a+b < 0) return a+b+mod; return a+b; } inline int poww(int n,ll k){ int c = 1; while (k){ if (k&1) c = (1ll*c*n)%mod; n = (1ll*n*n)%mod; k >>= 1; } return c; } vector<pll> adj[N]; int n,k; ll d[N][10]; void dij(int v,int i){ d[v][i] = 0; priority_queue<pll> pq; pq.push({0,v}); while (!pq.empty()){ pll u = pq.top(); pq.pop(); if (-u.X != d[u.Y][i]) continue; for (pll v : adj[u.Y]){ if (d[v.X][i] > v.Y+d[u.Y][i]){ d[v.X][i] = v.Y+d[u.Y][i]; pq.push({-d[v.X][i],v.X}); } } } } int main(){ ios :: sync_with_stdio(0); cin.tie(0); cout.tie(0); memset(d,63,sizeof d); int m; cin >> n >> k >> m; vector<int> ve; rep(i,0,k){ int x; cin >> x; ve.pb(x); } rep(i,0,m){ int u,v,w; cin >> u >> v >> w; adj[u].pb({v,w}); adj[v].pb({u,w}); } rep(i,0,k) dij(ve[i],i); ll ans = inf; rep(i,1,n+1){ ll cost = 0; rep(j,0,k) cost += d[i][j]; ans = min(ans,cost); } cout << ans; 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...