#include <cstdio>
#include <vector>
#include <algorithm>
#define x first
#define y second
#define NMAX 257
using namespace std;
vector< pair < int, int > > v[NMAX];
double a[NMAX][NMAX], b[NMAX];
int n, m;
void Gauss(){
for(int j = 1; j <= n; ++j) {
int i;
for(i = j; i <= n; ++i)
if(a[i][j])
break;
for(int k = 1; k <= n; ++k)
swap(a[j][k], a[i][k]);
swap(b[i], b[j]);
for(int i = 1; i <= n; ++i)
if(i != j){
double x = -a[i][j]/a[j][j];
for(int k = 1; k <= n; ++k)
a[i][k] += x * a[j][k];
b[i] += x * b[j];
}
}
}
int main() {
freopen("tunel.in", "r", stdin);
freopen("tunel.out", "w", stdout);
scanf("%d %d", &n, &m);
for (int i = 0; i < m; ++i) {
int a, b, c;
scanf("%d %d %d", &a, &b, &c);
v[a].push_back(make_pair(b, c));
v[b].push_back(make_pair(a, c));
}
for (int i = 1; i < n; ++i) {
a[i][i] = 1;
double coef = (double)1 / ((int)v[i].size());
for(vector < pair < int, int > >::iterator it = v[i].begin(); it != v[i].end(); ++it){
a[i][it->x] -= coef;
b[i] += coef * it->y;
}
}
a[n][n] = 1;
b[n] = 0;
Gauss();
printf("%.4f\n", (double)b[1] / a[1][1]);
return 0;
}