#include<bits/stdc++.h>
#define re register
#define mod 998244353
#define inf 0x7f7f7f7f
#define MAXN 1000100
#define N 250000
#define M 10000100
#define Q 10000010
#define int long long
using namespace std;
template <typename T> inline void read(T &x)
{
x = 0 ; int w = 1 ; char ch = getchar();
while(!isdigit(ch)) {if(ch == '-') w = -1 ; ch = getchar();}
while(isdigit(ch)) x = (x << 1) + (x << 3) + (ch ^ 48) , ch = getchar();
x *= w;
}
template <typename T> inline void write(T x)
{
if(x < 0)
putchar('-') , x = -x ;
if(x == 0)
{
putchar('0');
return ;
}
if(x > 9)
write(x / 10);
putchar(x % 10 + '0');
return ;
}
struct node{
int u,v,w,nxt;
}e[MAXN];
int h[MAXN],t;
inline void add(int u,int v,int w)
{
e[++t].v=v;
e[t].w=w;
e[t].nxt=h[u];
h[u]=t;
}
int in[MAXN],cnt,cntt,n,m,dis[MAXN];
double f[MAXN];
inline void tp()
{
queue<int> q;
for(int i=1;i<=n;i++)
if(!in[i])
q.push(i);
while(!q.empty())
{
int u=q.front();
q.pop();
for(int i=h[u];i;i=e[i].nxt)
{
int v=e[i].v,w=e[i].w;
f[v]+=(f[u]+w)/dis[v];
in[v]--;
if(!in[v])
q.push(v);
}
}
}
int a,b,c;
signed main()
{
read(n),read(m);
for(int i=1;i<=m;i++)
{
read(a),read(b),read(c);
add(b,a,c);
in[a]++,dis[a]++;
}
tp();
printf("%0.2lf\n",f[1]);
return 0;
}