http://blog.csdn.net/lucky_vikey/article/details/38424353 原文地址
#include<stdio.h>
#include<string.h>
#define max 10000000 //为什么改成#define max <span class="preprocessor" style="padding: 0px; margin: 0px; border: none; color: gray; font-family: Consolas, 'Courier New', Courier, mono, serif; line-height: 14px; background-color: rgb(248, 248, 248);">0x7FFFFFFF</span><span style="padding: 0px; margin: 0px; border: none; font-family: Consolas, 'Courier New', Courier, mono, serif; line-height: 14px; background-color: rgb(248, 248, 248);"> 答案就会有错误?</span>
int dis[700][700];
int juan[10050];
int main()
{
int n,m,k,i,j,u,v,w;
scanf("%d%d%d",&n,&m,&k);
for(i=1;i<=m;i++)
{
for(j=1;j<=m;j++)
{
if(i==j) dis[i][j]=0;
else dis[i][j]=max;
}
}
/* for(i=1;i<=m;i++)
{
for(j=1;j<=m;j++)
{
dis[i][j]=dis[j][i]=max;
}
dis[i][i]=0;
}*/
for(i=1;i<=n;i++)
{
scanf("%d",&juan[i]);
// printf("%d* * * * * *\n",juan[i]);
}
while(k--)
{
int a,b,c;
scanf("%d%d%d",&a,&b,&c);
if(dis[a][b]>c&&dis[b][a]>c)
{
dis[a][b]=dis[b][a]=c;
// printf("%d* * * * * *\n",dis[a][b]);
}
}
for(u=1;u<=m;u++)
{
for(v=1;v<=m;v++)
{
for(w=1;w<=m;w++)
{
if(dis[v][u]+dis[u][w]<dis[v][w])
{
dis[v][w]=dis[v][u]+dis[u][w];
}
}
}
}
int sum;
int min=max;
for(i=1;i<=m;i++)
{
sum=0;
for(j=1;j<=n;j++)
{
sum=sum+dis[i][juan[j]];
}
if(sum<min)
min=sum;
}
printf("%d\n",min);
}
人活着系列之芳姐和她的猪
最新推荐文章于 2024-08-15 02:23:15 发布