#include <bits/stdc++.h>
#define INF 0x3f3f3f3f
using namespace std;
int ma[620][620];
void floyd(int n)
{
int i,j,k;
for(k=1;k<=n;k++) // 最外面看不懂
{
for(i=1;i<=n;i++)
{
for(j=1;j<=n;j++)
{
if(ma[i][j]>ma[i][k]+ma[k][j])
{
ma[i][j]=ma[i][k]+ma[k][j];
}
}
}
}
}
int main()
{
int q[620];
int n,m,k,i,j;
scanf("%d%d%d",&n,&m,&k);
for(i=1;i<=m;i++)
{
for(j=1;j<=m;j++)
{
if(i==j)
{
ma[i][j]=0;
}
else
{
ma[i][j]=INF;
}
}
}
for(int i=0;i<n;i++)
{
scanf("%d",&q[i]);
}
while(k--)
{
int u,v,w;
scanf("%d%d%d",&u,&v,&w);
if(ma[u][v]>w)
{
ma[u][v]=ma[v][u]=w;
}
}
floyd(m);
int minn=INF;
for(i=1;i<=m;i++)
{
int sum=0;
for(j=0;j<n;j++)
{
sum+=ma[q[j]][i];
}
if(sum<minn)
{
minn=sum;
}
}
printf("%d\n",minn);
return 0;
}
人活着系列之芳姐和芳姐的猪(floyd算法)
最新推荐文章于 2020-03-16 12:07:07 发布