1 #include<iostream>
2 #include<cstdio>
3 #include<cstring>
4 using namespace std;
5 const int MAXN=1000001;
6 const int maxn=0x7fffffff;
7 struct node
8 {
9 int u;
10 int v;
11 double w;
12 int next;
13 }edge[MAXN];
14 int num=1;
15 int head[MAXN];
16 int vis[MAXN];
17 double ans=0;
18 void dfs(int p,double qw)// p 表示正在访问的点 w表示当前的期望值
19 {
20 // if(qw>ans)return;
21 int tot=0;
22 for(int i=head[p];i!=-1;i=edge[i].next)
23 {
24 tot++;
25 }
26 qw=qw/tot;
27 for(int i=head[p];i!=-1;i=edge[i].next)
28 {
29 ans=ans+edge[i].w*qw;
30 dfs(edge[i].v,qw);
31 }
32
33 }
34 int main()
35 {
36 int n,m;
37 scanf("%d%d",&n,&m);
38 for(int i=1;i<=n;i++)head[i]=-1;
39 for(int i=1;i<=m;i++)
40 {
41 scanf("%d%d%lf",&edge[num].u,&edge[num].v,&edge[num].w);
42 edge[num].next=head[edge[num].u];
43 head[edge[num].u]=num++;
44 }
45 vis[1]=1;
46 dfs(1,1);
47 printf("%.2lf",ans);
48 return 0;
49 }