1 #include<cstdio>
2 #include<cstring>
3 #include<iostream>
4 #include<algorithm>
5 #define INF 9999999//将其设定为一个大数
6 #define RANGE 101
7 using namespace std;
8 int d[RANGE][RANGE];
9 int n,m;
10 void warshall_floyd()
11 {
12 int i,j,k;
13 for(k=1;k<=n;k++)
14 for(i=1;i<=n;i++)
15 for(j=1;j<=n;j++)
16 d[i][j]=min(d[i][j],d[i][k]+d[k][j]);
17 }
18 int main()
19 {
20 int a,b,c,i,j;
21 while(scanf("%d%d",&n,&m))
22 {
23 if(n==0&&m==0)
24 break;
25 for(i=1;i<=n;i++)
26 for(j=1;j<=i;j++)
27 {
28 if(i==j)
29 d[i][j]=0;
30 else
31 d[i][j]=d[j][i]=INF;
32 }
33
34 for(i=0;i<m;i++)
35 {
36 scanf("%d%d%d",&a,&b,&c);
37 d[a][b]=d[b][a]=c;
38 }
39 warshall_floyd();
40 printf("%d
",d[1][n]);
41 }
42 return 0;
43 }