题意:就不再说了,用floyd 算法时 复杂度蛮高的 但是 代码简单 超级简单
连接:http://acm.hdu.edu.cn/showproblem.php?pid=2544


#include <iostream>//floyd 算法 很简单的floyd using namespace std; #define INF 0xfffffff #define MAX (10000+10) int map[MAX][MAX]; void init(int n)//各种初始化 { for(int i=1;i<=n;i++) { for(int j=1;j<=n;j++) { map[i][j]=INF; } } } int main() { int m; int a; int b; int c; int n; while(cin>>n>>m,n+m) { init(n); while(m--) { cin>>a>>b>>c; map[b][a]=c; map[a][b]=c; } for(int k=1;k<=n;k++)//floyd 核心算法 3个for循环 { for(int j=1;j<=n;j++) { for(int i=1;i<=n;i++) { if(map[j][i]>map[j][k]+map[k][i]) { map[j][i]=map[j][k]+map[k][i]; } } } } cout<<map[1][n]<<endl; } return 0; }