题目大意:给出n个路口,标号为1的路口是商店所在地,标号为N的路口是赛场所在地,给出m条道路,给出每条道路连接的两个路口并给出工作人员走这条路所需的时间,找一条路径使得工作人员从商店到比赛场地的时间最少,求出最少的时间。
思路分析:Floyd
代码实现:
#include<stdio.h>
#include<string.h>
#define min(a,b) (a<b?a:b)
int w[110][110],n,m;
void Floyd(){
for(int k=1;k<=n;k++){
for(int i=1;i<=n;i++){
for(int j=1;j<=n;j++)
w[i][j]=min(w[i][k]+w[j][k],w[i][j]);
}
}
}
int main(){
while(~scanf("%d%d",&n,&m),(n||m)){
for(int i=0;i<=n;i++){
for(int j=0;j<=n;j++)
w[i][j]=1e9;
}
int a,b,c;
while(m--){
scanf("%d%d%d",&a,&b,&c);
if(c<w[a][b]) w[a][b]=w[b][a]=c;
}
Floyd();
printf("%d\n",w[1][n]);
}
}