#include<bits/stdc++.h>
#define inf 0x3f3f3f3f
int a[101][101];
int main()
{
int n,m,i,j,k,u,v,q;
while(~scanf("%d %d",&n,&m))
{
memset(a,0,sizeof(a));
for(j=0; j<=n; j++)
{
for(i=0; i<=n; i++)
{
if(i==j)
a[i][j]=0;
else
a[i][j]=inf;
}
}
for(i=1; i<=m; i++)
{
scanf("%d %d %d",&u,&v,&q);
if(a[u][v]>q)
a[u][v]=a[v][u]=q;
}
for(k=1; k<=n; k++)
{
for(i=1; i<=n; i++)
{
for(j=1; j<=n; j++)
{
if(i!=j&&a[i][k]<inf&&a[k][j]<inf&&a[i][j]>a[i][k]+a[k][j])
a[i][j]=a[i][k]+a[k][j];
}
}
}
printf("%d\n",a[1][n]);
}
}
图结构练习——最短路径
最新推荐文章于 2021-02-20 11:05:32 发布