题解一堆术语、公式、符号,看半天我都看不懂,自己想分分钟想明白,附AC代码:
#include<bits/stdc++.h>
using namespace std;
struct node{
int y,s;
};
int n,m,x,y,s,r[100005];
double d,gl[100005];
vector<node> a[100005];
void dfs(int id,double g){
r[id]--,gl[id]+=g;
if(r[id]!=0)return;
for(int i=0;i<a[id].size();i++){
d+=gl[id]/a[id].size()*a[id][i].s;
dfs(a[id][i].y,gl[id]/a[id].size());
}
return;
}
int main(){
cin>>n>>m;
for(int i=1;i<=m;i++){
cin>>x>>y>>s;
a[x].push_back(node{y,s});
r[y]++;
}
r[1]=1;
dfs(1,1.0);
printf("%.2lf",d);
return 0;
}