码迷,mamicode.com
首页 > 其他好文 > 详细

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

时间:2017-05-23 22:40:51      阅读:173      评论:0      收藏:0      [点我收藏+]

标签:tchar   代码   top   turn   cstring   1.0   char   scan   for   

绿豆蛙的归宿

 

 

思路:

  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

标签:tchar   代码   top   turn   cstring   1.0   char   scan   for   

原文地址:http://www.cnblogs.com/IUUUUUUUskyyy/p/6896389.html

(0)
(0)
   
举报
评论 一句话评论(0
登录后才能评论!
© 2014 mamicode.com 版权所有  联系我们:gaon5@hotmail.com
迷上了代码!