提交时间:2024-06-11 13:58:10

运行 ID: 151053

#include<bits/stdc++.h> using namespace std; int n,p,c,e[501][501],f[501],u,v,w,s,ans=INT_MAX; int main() { cin>>n>>p>>c; for(int i=1;i<=p;i++) for(int j=1;j<=p;j++) e[i][j]=(i!=j)*INT_MAX; for(int i=1;i<=n;i++) cin>>f[i]; for(int i=1;i<=c;i++) cin>>u>>v>>w,e[u][v]=e[v][u]=w; for(int k=1;k<=p;k++) for(int i=1;i<=p;i++) for(int j=1;j<=p;j++) if(i!=j&&j!=k&&j!=k&&e[i][k]<INT_MAX&&e[k][j]<INT_MAX) e[i][j]=min(e[i][j],e[i][k]+e[k][j]); for(int i=1;i<=p;i++) { s=0; for(int j=1;j<=n;j++) { if(e[i][f[j]]<INT_MAX) s+=e[i][f[j]]; else break; } ans=min(ans,s); } cout<<ans; }