#include<stdio.h>
#include<string.h>
struct ju
{
int u,v,w;
} lu[2333];
int dis[2333];
int main()
{
int n,i,m,str,end,j;
while(scanf("%d%d",&n,&m)!=EOF)
{
for(i=0; i<n; i++)
dis[i]=999999999;
for(i=0; i<2*m; i=i+2)
{
scanf("%d%d%d",&lu[i].u,&lu[i].v,&lu[i].w);
lu[i+1].u=lu[i].v;
lu[i+1].v=lu[i].u;
lu[i+1].w=lu[i].w;
}
scanf("%d%d",&str,&end);
if(str>end)
{
int t;
t=str;
str=end;
end=t;
}
dis[str]=0;
for(i=0; i<2*m; i++)
{
if(lu[i].u==str)
dis[lu[i].v]=lu[i].w;
}
for(i=0; i<n-1; i++)
{
for(j=0; j<2*m; j++)
{
if(dis[lu[j].v]>dis[lu[j].u]+lu[j].w)
{
dis[lu[j].v]=dis[lu[j].u]+lu[j].w;
}
}
}
if(dis[end]==999999999)
printf("-1\n");
else
printf("%d\n",dis[end]);
}
return 0;
}
最短路径B
最新推荐文章于 2023-03-13 21:49:48 发布