dfs不解释.

#include <bits/stdc++.h>
using namespace std;
const int N=1e5+5;
struct vv{
  int to;
  double w;  
};

vector<vv>v[N];
double f[N];

double dfs(int x)
{
    if(f[x])    return f[x];
    int cnt=v[x].size();
    for(int i=0;i<cnt;i++)
    {
        f[x]+=(v[x][i].w+dfs(v[x][i].to))/cnt;
    }
    return f[x];
}

int main()
{
    int n,m;
    cin>>n>>m;
    for(int i=1;i<=m;i++)
    {
        int x,y,wi;
        cin>>x>>y>>wi;
        v[x].push_back(vv{y,wi});
    }//建图
    printf("%.2lf\n",dfs(1));
    return 0;
}