code:
#include<bits/stdc++.h>
using namespace std;
typedef long long ll;
typedef pair<int,int> pii;
const int N=505,M=8005;
const int inf=numeric_limits<int>::max();
bool vis[N];
int dis[N];
int a[N];
int n,m,f;
struct node{
int v,w;
};
vector<node>e[N];
void Dijkstra(int s){
memset(vis,0,sizeof vis);
memset(dis,0x3f,sizeof dis);
priority_queue<pii>q;
q.push({0,s});vis[s]=1;dis[s]=0;
while(!q.empty()){
pii t=q.top();q.pop();
int u=t.second;
if(vis[u])continue;
vis[u]=1;
for(auto edge:e[u]){
int v=edge.v,w=edge.w;
if(dis[v]>dis[u]+w)dis[v]=dis[u]+w,q.push({-dis[v],v});
}
}
}
signed 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;
e[u].push_back({v,w});
e[v].push_back({u,w});
}
int minn=inf,ans=0;
for(int i=1;i<=n;i++){
Dijkstra(i);
int sum=0;
for(int j=1;j<=f;j++){
sum+=dis[a[i]];
}
if(sum<minn)minn=sum,ans=i;
}
cout<<ans;
return 0;
}