Run ID 作者 问题 语言 测评结果 分数 时间 内存 代码长度 提交时间
150270 陈志轩 香甜的黄油 C++ 通过 100 127 MS 3936 KB 1571 2024-06-01 17:31:30

Tests(10/10):


#include<bits/stdc++.h> #define int long long using namespace std; int d[114514],e[114514],ans = 1919810; bool used[114514]; int n,m,s,q; struct Edge{ int v,w; }; vector <Edge> vec[114514]; inline int fastread(){ int x = 0,f = 1; char c = getchar(); while (c < '0' || c > '9'){ if (c == '-'){ f = -1; } c = getchar(); } while (c >= '0' && c <= '9'){ x = (x << 1) + (x << 3) + (c ^ 48); c = getchar(); } return x * f; } void Dijkstra(){ memset(d,0x3f3f3f3f,sizeof(d)); priority_queue <pair <int,int>,vector <pair <int,int> >,greater<pair <int,int> > > p; d[s] = 0; p.push(make_pair(0,s)); while (!p.empty()){ int u = p.top().second; if (d[u] < p.top().first){ p.pop(); continue; } p.pop(); used[u] = true; for (int i = 0;i < vec[u].size();i++){ int v = vec[u][i].v; int w = vec[u][i].w; if (d[u] + w < d[v]){ d[v] = d[u] + w; p.push(make_pair(d[v],v)); } } } return ; } signed main(){ q = fastread(); n = fastread(); m = fastread(); for (int i = 0;i < q;i++){ e[i] = fastread(); } for (int i = 0;i < m;i++){ int u,v,w; u = fastread(); v = fastread(); w = fastread(); vec[u].push_back((Edge){v,w}); vec[v].push_back((Edge){u,w}); } for (int i = 1;i <= n;i++){ s = i; Dijkstra(); int sum = 0; for (int j = 0;j < q;j++){ sum += d[e[j]]; } if (sum > 0){ ans = min(ans,sum); } } printf("%lld",ans); return 0; }


测评信息: