提交时间:2024-06-01 14:57:12

运行 ID: 150052

#include<bits/stdc++.h> using namespace std; using pil=pair<int,int>; vector<pil> g[100000]; long long d[100000],s,n,m,f,a[100005],mina,minx; void dij(){ for(int i=0;i<=n;i++){ d[i]=2147483647; } d[s]=0; priority_queue<pil,vector<pil>,greater<pil> > minq; minq.push(pil{d[s],s}); while(!minq.empty()){ auto x=minq.top();minq.pop(); long long du=x.first,u=x.second; if(du>d[u]) continue; for(auto e:g[u]){ int v=e.first,w=e.second; if(d[v]>du+w){ d[v]=du+w; minq.push(pil{d[v],v}); } } } } int main(){ cin>>n>>f>>m; for(int i=1;i<=f;i++) cin>>a[i]; for(int i=1;i<=m;i++){ int u,v,w; cin>>u>>v>>w; g[u].push_back(pil{v,w}); g[v].push_back(pil{u,w}); } for(int i=1;i<=n;i++){ s=i; dij(); long long sum=0; for(int j=1;j<=f;j++){ // cout<<d[a[j]]<<endl; sum+=d[a[j]]; } // cout<<sum<<endl; if(mina>sum||i==1){ mina=sum; minx=i; } } cout<<minx; return 0; }