#include<bits/stdc++.h>
#define ll long long
#define fi first
#define se second
#define pb push_back
#define PII pair<int,int >
#define int long long
#define IOS ios::sync_with_stdio(false),cin.tie(0),cout.tie(0)
using namespace std;
const int N = 1e6+5;
int w,n,m;
int dis[N];
bool vis[N];
map<int,int> mp;
vector<PII> v[N];
void dijkstra(int s)
{
priority_queue<PII,vector<PII>,greater<PII> > q;
for(int i=1;i<=n;i++)
{
dis[i]=1e18;
vis[i]=0;
}
dis[s]=0;
q.push({0,s});
while(q.size())
{
auto t=q.top();
q.pop();
int now=t.se;
if(vis[now]==1) continue;
vis[now]=1;
for(auto tt:v[now])
{
int spot=tt.fi,w=tt.se;
if(dis[spot]>dis[now]+w)
{
dis[spot]=dis[now]+w;
q.push({dis[spot],spot});
}
}
}
}
signed main()
{
IOS;
cin>>w>>n>>m;
for(int i=1;i<=w;i++)
{
int a;
cin>>a;
mp[a]++;
}
while(m--)
{
int a,b,d;
cin>>a>>b>>d;
v[a].pb({b,d});
v[b].pb({a,d});
}
int minn=1e18;
for(int i=1;i<=n;i++)
{
dijkstra(i);
int sum=0;
for(int j=1;j<=n;j++)
{
sum+=mp[j]*dis[j];
}
minn=min(minn,sum);
}
cout<<minn;
return 0;
}
P1828 [USACO3.2] 香甜的黄油 Sweet Butter
最新推荐文章于 2024-10-12 11:03:43 发布