#include<stdio.h> int n,map[1001][1001]; int dist[1001],s[1001],dp[1001]; int dfs(int v)//深搜 { int i,temp,sum=0; if(dp[v]!=-1) return dp[v]; if(v==2) return 1; for(i=1;i<=n;i++) { if(map[v][i]!=2000000&&dist[v]>dist[i])// { temp=dfs(i); sum+=temp; } } dp[v]=sum; return sum; } void dijkstra(int v)//dijkstra求最短路 { int i,j,u,min; for(i=1;i<=n;i++) dist[i]=map[v][i]; dist[v]=0; s[v]=1; for(i=1;i<n;i++) { min=2000000; for(j=1;j<=n;j++) { if(!s[j]&&dist[j]<min) { min=dist[j]; u=j; } } s[u]=1; for(j=1;j<=n;j++) { if(!s[j]&&dist[j]>dist[u]+map[u][j]) { dist[j]=dist[u]+map[u][j]; } } } } int main() { int i,j,x,m; while(scanf("%d",&n),n) { for(i=1;i<=n;i++) { s[i]=0; dp[i]=-1; for(j=1;j<=n;j++) map[i][j]=2000000; } scanf("%d",&m); while(m--) { scanf("%d%d%d",&i,&j,&x); map[i][j]=map[j][i]=x; } dijkstra(2); dfs(1); printf("%d/n",dp[1]); } return 0; }