#include<bits/stdc++.h>
using namespace std;
#define long long int;
const int mx=110;
int inf;
int n,m,dis[mx][mx],xy[mx][mx];
double ans[mx];
int main(){
cin>>n>>m;
memset(dis,0x7f,sizeof(dis));
inf=dis[1][1];
for(int i=1;i<=m;i++){
int a,b,c;
cin>>a>>b>>c;
dis[a][b]=c;
dis[b][a]=c;
xy[a][b]=1;
xy[b][a]=1;
}
for(int k=1;k<=n;k++)
for(int i=1;i<=n;i++)
for(int j=1;j<=n;j++){
if(dis[i][k]==inf&&dis[k][j]==inf)continue;
if(dis[i][j]>dis[i][k]+dis[k][j]){
dis[i][j]=dis[i][k]+dis[k][j];
xy[i][j]=xy[i][k]*xy[k][j];
continue;
}
if(dis[i][j]==dis[i][k]+dis[k][j])xy[i][j]+=xy[i][k]*xy[k][j];
}
for(int i=1;i<=n;i++){
for(int j=1;j<=n;j++)
for(int k=1;k<=n;k++){
if(i==j||j==k||i==k)continue;
if(dis[j][i]+dis[i][k]==dis[j][k])
ans[i]+=(1.0*xy[j][i]*xy[i][k])/xy[j][k];
}
}
for(int i=1;i<=n;i++)printf("%0.3f\n",ans[i]);
return 0;
}
到底哪里错了???