博客
关于我
强烈建议你试试无所不能的chatGPT,快点击我
[bzoj3036]绿豆蛙的归宿
阅读量:4581 次
发布时间:2019-06-09

本文共 825 字,大约阅读时间需要 2 分钟。

题目大意:给定 $DAG$ 带边权连通图,保证所有点都能到达终点 $n$,每个点等概率沿边走,求起点 $1$ 到终点 $n$ 的期望长度。

题解:拓扑,然后倒着$DP$就可以了

卡点:

 

C++ Code:

#include 
#define maxn 100010using namespace std;int n, m, oud[maxn], vis[maxn];int q[maxn], h, t;double f[maxn];int head[maxn], cnt;struct Edge { int to, nxt, w;} e[maxn << 1];void add(int a, int b, int c) { e[++cnt] = (Edge) {b, head[a], c}; head[a] = cnt;}int main() { scanf("%d%d", &n, &m); for (int i = 0; i < m; i++) { int a, b, c; scanf("%d%d%d", &a, &b, &c); add(b, a, c); oud[a]++; vis[a]++; } f[q[h = t = 0] = n] = 0; while (h <= t) { int u = q[h++]; for (int i = head[u]; i; i = e[i].nxt) { int v = e[i].to; f[v] += (f[u] + e[i].w) / oud[v]; --vis[v]; if (!vis[v]) q[++t] = v; } } printf("%.2lf\n", f[1]); return 0;}

  

转载于:https://www.cnblogs.com/Memory-of-winter/p/9466636.html

你可能感兴趣的文章
消息中间件——RabbitMQ(四)命令行与管控台的基本操作!
查看>>
Eclipse 写代码是自动重启服务
查看>>
3.8 spring - AbstractBeanDefinition 介绍
查看>>
如何在Visual Studio里面查看程序的汇编代码?
查看>>
解决IE11只能用管理员身份运行的问题
查看>>
android学习-LocationManager(一)-
查看>>
Linux安装单机solr
查看>>
dos alias/cname address
查看>>
NAT模式实现局域网物理机与虚拟机的互通访问
查看>>
cygwin下用arm-xscale-linux-gnueabi交叉编译libcgi
查看>>
delphi中WMI的使用(网卡是否接入)
查看>>
转载:面试:----电商项目中比较难得问题
查看>>
js弹出遮罩层
查看>>
Linux tar打包命令
查看>>
iOS中的UIView动画
查看>>
解决android textview 混合文字、数字换行后对列不齐
查看>>
Winform PPT切换图片效果
查看>>
ionic调用数据接口(post、解决 payload 问题)
查看>>
奇偶数分离
查看>>
1020 PAT
查看>>