//
// main.cpp
// 图论
//
// Created by liuzhe on 16/8/15.
// Copyright © 2016年 my_code. All rights reserved.
//
#include <iostream>
#include <algorithm>
#include <cstdio>
#include <cstring>
#include <cmath>
#include<utility>
#include<queue>
using namespace std;
const int N=105;
const int INF=2147483646;
int n, m, d[N][N];
inline void read_graph(){
for(int i=1; i<=n; ++i){
d[i][i] = INF;
for(int j=i+1; j<=n; ++j)
d[i][j]=d[j][i]=INF;
}
int a,b,c;
for(int e=1; e<=m; ++e){
scanf("%d%d%d",&a,&b,&c);
d[a][b]=d[b][a]=c;
}
}
inline void Floyd(int src){
for(int k=1; k<=n; ++k){
for(int i=1; i<=n; ++i){
for(int j=1; j<=n; ++j)
if(d[i][k]<INF && d[k][j]<INF){ //防止溢出
d[i][j] = min(d[i][j], d[i][k]+d[k][j]);
}
}
}
}
int main(){
int a,b,c;
while(~scanf("%d%d",&n,&m)&&n+m){
read_graph();
Floyd(1);
printf("%d\n", d[1][n]);
}
return 0;
}
hdu 2544最短路Floyd
最新推荐文章于 2024-07-25 11:43:17 发布