#include <iostream>
#include <stdio.h>
using namespace std;
int main(){
int i,j,k,M,N,x,y,v;
while(scanf("%d %d",&N,&M)&&N!=0&&M!=0){
int map[102][102]={0},max=100000;
int d[102][102];
for(i=1;i<=M;i++){
scanf("%d %d %d",&x,&y,&v);
if(!map[x][y]){
map[x][y]=v;
map[y][x]=v;
}
if(v<map[x][y]){
map[x][y]=v;
map[y][x]=v;
}
}
for(i=1;i<=N;i++){
for(j=1;j<=N;j++){
if(i==j){
d[i][j]=0;
d[j][i]=0;
}
if(map[i][j]){
d[i][j]=d[j][i]=map[i][j];
}
if(!map[i][j]&&i!=j){
d[i][j]=d[j][i]=max;
}
}
}
for(i=1;i<=N;i++){
for(j=1;j<=N;j++){
for(k=1;k<=N;k++){
if((d[j][i]+d[i][k]<d[j][k])){
d[j][k]=d[j][i]+d[i][k];
}
}
}
}
printf("%d\n",d[1][N]);
}
return 0;
} ACM暑期集训——专题二[最短路Floyd算法]
最新推荐文章于 2020-09-05 11:21:44 发布
本文介绍了一个使用C++实现的最短路径算法程序。该程序通过读取输入数据构造图,并利用Floyd-Warshall算法计算两个指定节点之间的最短路径。通过动态更新节点间的距离来确保寻找到最优路径。

1933

被折叠的 条评论
为什么被折叠?



