AC日记——绿豆蛙的归宿 codevs 2488

Posted Only U - IU

tags:

篇首语:本文由小常识网(cha138.com)小编为大家整理,主要介绍了AC日记——绿豆蛙的归宿 codevs 2488相关的知识,希望对你有一定的参考价值。

绿豆蛙的归宿

 

 

思路:

  topsort+期望dp;

 

代码:

#include <cstdio>
#include <cstring>
#include <iostream>
#include <algorithm>

using namespace std;

#define maxn 100005

int 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的主要内容,如果未能解决你的问题,请参考以下文章

2488 绿豆蛙的归宿

2488 绿豆蛙的归宿

2488 绿豆蛙的归宿

25.绿豆蛙的归宿(拓扑排序)

BZOJ 3036 3036: 绿豆蛙的归宿 (概率DP)

Luogu P4316 绿豆蛙的归宿