#include<iostream> #include<string> #include<algorithm> using namespace std; const int Max=INT_MAX/2; const int N=101; bool visited[N]; int mat[N][N]; int dist[N]; int n,m; int Minval(int n) { int next=-1; for(int i=1;i<n;i++) { if(!visited[i]&&(next==-1||dist[i]<dist[next])) next=i; } return next; } void dijkstra(int n) { for(int i=0;i<n;i++) {dist[i]=mat[0][i];} fill(visited,visited+n,false); visited[0]=true; for(i=1;i<n;i++) { int next=Minval(n); visited[next]=true; for (int i=0;i<n;i++) { if (dist[i]>dist[next]+mat[next][i]) dist[i]=dist[next]+mat[next][i]; } } } int main() { int i,begin,end,minute; while(scanf("%d%d",&n,&m)!=EOF) { if(n==0&&m==0) break; fill(&mat[0][0],&mat[n][n]+1,Max); for(i=0;i<n;i++) mat[i][i]=0; for(i=0;i<m;i++) { scanf("%d%d%d",&begin,&end,&minute); if(begin>end) swap(begin,end); if(minute<mat[begin-1][end-1]) { mat[begin-1][end-1]=minute; mat[end-1][begin-1]=minute; } } dijkstra(n); printf("%d/n",dist[n-1]); } return 0; }