首页 > 代码库 > AC日记——绿豆蛙的归宿 codevs 2488
AC日记——绿豆蛙的归宿 codevs 2488
绿豆蛙的归宿
思路:
topsort+期望dp;
代码:
#include <cstdio>#include <cstring>#include <iostream>#include <algorithm>using namespace std;#define maxn 100005int head[maxn],cnt,E[maxn<<2],V[maxn<<2],du[maxn];int sta[maxn],top,n,m;double W[maxn<<2],dp[maxn][2],num[maxn];inline void in(int &now){ char Cget=getchar();now=0; while(Cget>‘9‘||Cget<‘0‘) Cget=getchar(); while(Cget>=‘0‘&&Cget<=‘9‘) { now=now*10+Cget-‘0‘; Cget=getchar(); }}inline void edge_add(int u,int v,double w){ E[++cnt]=head[u],V[cnt]=v,W[cnt]=w,head[u]=cnt;}int main(){ in(n),in(m);int u,v;double w; for(;m--;) { in(u),in(v),du[v]++; num[u]+=1.0; scanf("%lf",&w); edge_add(u,v,w); } dp[1][1]=1,sta[++top]=1; while(top>0) { int now=sta[top--]; for(int i=head[now];i;i=E[i]) { dp[V[i]][1]+=dp[now][1]/num[now],du[V[i]]--; dp[V[i]][0]+=(dp[now][1]*W[i]+dp[now][0])/num[now]; if(!du[V[i]]) sta[++top]=V[i]; } } printf("%.2lf",dp[n][0]); return 0;}
AC日记——绿豆蛙的归宿 codevs 2488
声明:以上内容来自用户投稿及互联网公开渠道收集整理发布,本网站不拥有所有权,未作人工编辑处理,也不承担相关法律责任,若内容有误或涉及侵权可进行投诉: 投诉/举报 工作人员会在5个工作日内联系你,一经查实,本站将立刻删除涉嫌侵权内容。