题解 | 绿豆蛙的归宿

绿豆蛙的归宿

https://ac.nowcoder.com/acm/contest/1028/B

有向无环图是个很好的性质。因为期望dp都是逆推,所以可以建反图,然后在反图上拓扑排序来递推。设表示点到终点的期望路径长度,有,为点的度数。答案为

#include <bits/stdc++.h>
using namespace std;

const int N = 100010;

double f[N];
int n, m, du[N], in[N];
int cnt, head[N], q[N];
struct edge {int to, nxt, v;} e[N];

void ins(int u, int v, int w) {
    e[++cnt] = (edge) {v, head[u], w};
    head[u] = cnt;
}

int main() {
    scanf("%d%d", &n, &m);
    for(int u, v, w, i = 1; i <= m; ++i) {
        scanf("%d%d%d", &u, &v, &w); 
        in[u]++; du[u]++; ins(v, u, w);
    }
    int l = 1, r = 1;
    q[r++] = n;
    while(l < r) {
        int u = q[l++];
        for(int i = head[u]; i; i = e[i].nxt) {
            int v = e[i].to;
            f[v] += (double) (f[u] + e[i].v) / du[v];
            in[v]--;
            if(!in[v]) q[r++] = v;
        }
    }
    printf("%.2lf\n", f[1]);
}
全部评论

相关推荐

点赞 评论 收藏
分享
今年读完研的我无房无车无对象,月入还没有过万&nbsp;看到他在朋友圈晒房产证,感叹自己白读了这么多年书
梦想是成为七海千秋:那咋了,双9毕业的现在还没存款呢(因为没念完),高中毕业的去直播带货月入几百万也是完全有可能的,退一万步讲,有些人刚出生父母就给买车买房了,上哪说理去,哪怕是同一个起点也会有截然不同的走向,过好自己的生活就完事了。
点赞 评论 收藏
分享
评论
点赞
收藏
分享

创作者周榜

更多
牛客网
牛客网在线编程
牛客网题解
牛客企业服务