题解:略。
printf("%.2f")是四舍五入么QwQ
//BZOJ 3036
#include<vector>
#include<cstdio>
#include<cstring>
#include<iostream>
#define MAXN 100010
using namespace std;
struct node{
int to,val;
node(int _to,int _val)
{
to=_to;
val=_val;
}
};
vector<node> g[MAXN];
double dp[MAXN];
bool calc[MAXN];
double getdp(int x)
{
if(calc[x]) return dp[x];
calc[x]=true;dp[x]=0.0;
for(int i=g[x].size()-1;i>=0;i--)
dp[x]+=(g[x][i].val+getdp(g[x][i].to))/g[x].size();
return dp[x];
}
int main()
{
int n,m;scanf("%d%d",&n,&m);
for(int i=1;i<=m;i++)
{
int u,v,c;scanf("%d%d%d",&u,&v,&c);
g[u].push_back(node(v,c));
}
calc[n]=true;dp[n]=0.0;
printf("%.2f\n",getdp(1));
return 0;
}