#include<bits/stdc++.h>
using namespace std;
unordered_map<int,int>s[100005];
struct node{
vector<int>a;
vector<int>c;
}q[100005];
double ans1[100005],ans2[100005];
double g(int x){
if(x==1)return 1;
if(ans2[x]!=-1)return ans2[x];
double sum=0;
for(int i=0;i<(int)q[x].c.size();i++){
sum+=g(q[x].c[i])/q[q[x].c[i]].a.size();
}
ans2[x]=sum;
return ans2[x];
}
double f(int x){
if(x==1)return 0;
if(ans1[x]!=-1)return ans1[x];
double ans=0;
for(int i=0;i<(int)q[x].c.size();i++){
ans+=(f(q[x].c[i])+s[q[x].c[i]][x])*g(q[x].c[i])/q[q[x].c[i]].a.size();
}
ans1[x]=ans;
return ans1[x];
}
int main(){
for(int i=2;i<=100000;i++)ans1[i]=ans2[i]=-1;
ans1[1]=0;
ans2[1]=1;
int n,m;
cin>>n>>m;
int l,r,d;
for(int i=1;i<=m;i++){
cin>>l>>r>>d;
q[l].a.push_back(r);
q[r].c.push_back(l);
s[l][r]=d;
}
printf("%.2lf",f(n));
return 0;
}