#include<cstdio>
#include<iostream>
#include<vector>
using namespace std;
#define N 1000100
vector<int>road[N];
vector<int>dis[N];
int n,m;
double f[N];
double tp(int x){
if(x==n) return 0;
if(f[x]) return f[x];
for(int i=0;i<road[x].size();i++){
f[x]+=(tp(road[x][i])+dis[x][i])/road[x].size();
}//看不出拓扑,直接dfs
return f[x];
}
int main(){
scanf("%d%d",&n,&m);
for(int i=1,a,b,c;i<=m;i++){
scanf("%d%d%d",&a,&b,&c);
road[a].push_back(b);//结构体写也可以
dis[a].push_back(c);//vector更方便
}
printf("%.2lf\n",tp(1));
return 0;
}