为什么只有10分
查看原帖
为什么只有10分
1388282
ouyangdou楼主2025/1/22 22:12
#include<bits/stdc++.h>
using namespace std;
unordered_map<int,int>s[100005];
struct node{
    vector<int>a;
    vector<int>c;
}q[100005];
double ans1[100005],ans2[100005];
double g(int x){
    if(x==1)return 1;
    if(ans2[x]!=-1)return ans2[x];
    double sum=0;
    for(int i=0;i<(int)q[x].c.size();i++){
        sum+=g(q[x].c[i])/q[q[x].c[i]].a.size();
    }
    ans2[x]=sum;
    return ans2[x];
}
double f(int x){
    if(x==1)return 0;
    if(ans1[x]!=-1)return ans1[x];
    double ans=0;
    for(int i=0;i<(int)q[x].c.size();i++){
        ans+=(f(q[x].c[i])+s[q[x].c[i]][x])*g(q[x].c[i])/q[q[x].c[i]].a.size();
    }
    ans1[x]=ans;
    return ans1[x];
}
int main(){
    for(int i=2;i<=100000;i++)ans1[i]=ans2[i]=-1;
    ans1[1]=0;
    ans2[1]=1;
    int n,m;
    cin>>n>>m;
    int l,r,d;
    for(int i=1;i<=m;i++){
        cin>>l>>r>>d;
        q[l].a.push_back(r);
        q[r].c.push_back(l);
        s[l][r]=d;
    }
    printf("%.2lf",f(n));
    return 0;
}

2025/1/22 22:12
加载中...