#include<bits/stdc++.h>
using namespace std;
const int inf=2147483647;
const int MAXN=5005;
int u,v,w;
struct edge{
int u,v,cost;
};
vector<edge>s;
vector<int> e[MAXN];
int n,p,c;
int dis[MAXN],mc[MAXN];
bool vis[MAXN];
void spfa(int s){
queue<int> q;
for(int i=1;i<=p;i++){
dis[i]=inf;
}
dis[s]=0;
q.push(s);
vis[s]=1;
while(!q.empty()){
int u=q.front();
for(int i=0;i<e[u].size();i++){
int to=s[e[u][i]].v;
int cost=s[e[u][i]].w;
if(dis[u]+cost<dis[to]){
dis[to]=dis[u]+cost;
if(!vis[to]){
q.push(to);
vis[to]=1;
}
}
}
q.pop();
vis[u]=0;
}
}
int main(){
scanf("%d %d %d",&n,&p,&c);
for(int i=1;i<=n;i++){
scanf("%d",&mc[i]);
}
for(int i=0;i<2*c-1;i+=2){
scanf("%d %d %d",&u,&v,&w);
s.push_back(edge{u,v,w});
s.push_back(edge{v,u,w});
e[u].push_back(i);
e[v].push_back(i+1);
}
int ans=inf;
for(int i=1;i<=p;i++){
int di=0;
spfa(i);
for(int j=1;j<=n;j++){
di+=dis[mc[j]];
}
ans=min(ans,di);
}
printf("%d\n",ans);
return 0;
}
第25、26行报错 错误类型:invalid types int[int] for array subscript