#include <cstdio>
#include <algorithm>
#include <cstring>
#include <cstdlib>
#include <iostream>
#define int long long
using namespace std;
const int N = 200;
int Map[N][N],Sum[N][N];
signed main()
{
#ifdef DMYTXDY
freopen("data.in","r",stdin);
#endif
int n,m;cin>>n>>m;
for(int i=1;i<=n;++i){
for(int j=1;j<=n;++j)
Map[i][j] = 1e9;
}
for(int i=1;i<=m;++i){
int a,b,c;
cin>>a>>b>>c;
Map[a][b]=Map[b][a]=c;
Sum[a][b]=Sum[b][a]=1;
}
for(int i=1;i<=n;++i) Map[i][i] = 0;
for(int k=1;k<=n;++k){
for(int i=1;i<=n;++i){
for(int j=1;j<=n;++j){
if(i==j || j == k || i==k) continue;
if(Map[i][k] + Map[k][j] == Map[i][j]){
Sum[i][j] += Sum[i][k] * Sum[k][j];
}
if(Map[i][k] + Map[k][j] < Map[i][j]){
Map[i][j] = Map[i][k] + Map[k][j];
Sum[i][j] = Sum[i][k] * Sum[k][j];
}
}
}
}
// for(int i=1;i<=n;++i){
// for(int j=1;j<=n;++j){
// printf("%d -> %d : %d\n",i,j,Sum[i][j]);
// }
// }
// return 0;
for(int k=1;k<=n;++k){
double ans = 0;
for(int j=1;j<=n;++j){
if(j==k) continue;
for(int i=1;i<=n;++i){
if(k==i) continue;
if(i==j) continue;
if(Map[i][j] == Map[i][k]+Map[k][j]){
ans += 1.0*Sum[i][k]*Sum[k][j]/Sum[i][j];
}
}
}
printf("%.3lf\n",ans);
}
return 0;
}