#include <stdio.h>
#include <vector>
#include <queue>
#include <list>
#include <set>
#include <algorithm>
#include <utility>
#include <string>
using namespace std;
#define FOR(i,a,b) for(typeof a i=a;i<=b;i++)
#define fori(it,v) for (typeof ((v).begin()) it=(v).begin();it!=(v).end();it++)
#define pb push_back
#define mp make_pair
#define fs first
#define ss second
#define all(c) c.begin(),c.end()
double dist,prob,sol[300],b[300][300];
vector <vector<pair<int,int> > > a(300);
int main()
{
FILE *in,*out;
int n,m,x,y,z;
in=fopen("tunel.in","r");
out=fopen("tunel.out","w");
fscanf(in,"%d%d",&n,&m);
FOR(i,1,m)
{
fscanf(in,"%d%d%d",&x,&y,&z);
a[x].pb(mp(y,z));
a[y].pb(mp(x,z));
}
FOR(i,1,n-1)
{
b[i][i]=1;
int prob=a[i].size();
int dist= 0;
fori(it,a[i])
{
dist+=it->ss;
b[i][it->fs]+=-1.0/prob;
}
b[i][n+1]=((double)dist)/prob;
}
FOR(i,1,n-1)
{
int poz=-1;
FOR(j,i,n)
if (b[j][i])
{
poz=j;
break;
}
FOR(j,1,n+1)
swap(b[i][j],b[poz][j]);
FOR(j,(i+1),n)
{
double chestie=-b[j][i]/b[i][i];
FOR(k,1,n+1)
b[j][k]+=chestie*b[i][k];
}
}
for (int i=n-1;i>=1;i--)
{
double sum=0;
FOR(j,(i+1),n)
sum+=b[i][j]*sol[j];
sol[i]=(b[i][n+1]-sum)/b[i][i];
}
fprintf(out,"%lf\n",sol[1]);
fclose(in);
fclose(out);
return 0;
}