跟1874一样有一个大坑,map[a][b] = map[ b][a] = min(map[b][a],w]
#include <iostream>
#include <stdio.h>#include <string.h>
#define maxn 300
#define INF 1000000
using namespace std;
int map[maxn][maxn];
int n,m;
void Flo( )
{
for( int k = 1; k <=n; k++)
for( int i = 1; i <= n; i++)
for( int j = 1; j <= n; j++)
{
if(map[i][j] > map[i][k] + map[k][j])
map[i][j] = map[i][k] + map[k][j];
}
return ;
}
int main()
{
int a,b,w;
while(scanf("%d%d",&n,&m)!= EOF && n &&m)
{
for( int i = 1; i<=n; i++)
for( int j = 1; j<=n; j++)
{
map[i][j] = (i == j ? 0 : INF);
map[j][i] = map[i][j];
}
for( int i = 1 ;i <= m; i++)
{
scanf("%d%d%d",&a,&b,&w);
map[a][b] = map[b][a] = min(map[b][a],w);// d大坑
}
Flo();
printf("%d\n",map[1][n]);
}
}