题目:
题解:
就是个入门啊
f[i]表示从i开始到终点的期望步数
代码:
#include <cstdio>
#include <cstring>
#include <iostream>
#define N 100005
using namespace std;
int tot,nxt[N*2],point[N],v[N*2],c[N*2];
double f[N];bool vis[N];
void addline(int x,int y,int z){++tot; nxt[tot]=point[x]; point[x]=tot; v[tot]=y; c[tot]=z;}
void dfs(int x)
{
int k=0;
vis[x]=1;
for (int i=point[x];i;i=nxt[i])
{k++;if (!vis[v[i]]) dfs(v[i]);}
for (int i=point[x];i;i=nxt[i])
f[x]+=(c[i]+f[v[i]])/(k*1.0);
}
int main()
{
int n,m,i;
scanf("%d%d",&n,&m);
for (i=1;i<=m;i++)
{
int x,y,z;
scanf("%d%d%d",&x,&y,&z);
addline(x,y,z);
}
dfs(1);
printf("%.2lf",f[1]);
}