【BZOJ3036】绿豆蛙的归宿 概率DP
2015-06-12 07:54
253 查看
链接:
#include <stdio.h> int main() { puts("转载请注明出处[辗转山河弋流歌 by 空灰冰魂]谢谢"); puts("网址:blog.csdn.net/vmurder/article/details/46467217"); }
题解:
呃,拓扑图上从后往前扫就好了Qwq代码:
#include <queue> #include <cstdio> #include <cstring> #include <iostream> #include <algorithm> #define N 101000 using namespace std; struct Eli { int v,l,n; bool f; }e[N<<1]; int head ,cnt,d ,D ; inline void add(int u,int v,int l) { e[++cnt].v=v; e[cnt].l=l; e[cnt].n=head[u]; head[u]=cnt; } double f ; queue<int>q; bool vis ; int n,m; void bfs() { int i,u,v; q.push(n); while(!q.empty()) { vis[u=q.front()]=true,q.pop(); for(i=head[u];i;i=e[i].n) if(!vis[v=e[i].v])q.push(v); } } int main() { int i,u,v; int a,b,c; scanf("%d%d",&n,&m); for(i=1;i<=m;i++) { scanf("%d%d%d",&a,&b,&c); add(b,a,c),d[a]++; } for(i=1;i<=n;i++)D[i]=d[i]?d[i]:1; bfs(); q.push(n); while(!q.empty()) { u=q.front(),q.pop(),f[u]/=D[u]; for(i=head[u];i;i=e[i].n) { if(vis[u])f[v=e[i].v]+=f[u]+e[i].l; if(--d[v]==0)q.push(v); } } printf("%.2lf\n",f[1]); return 0; }
相关文章推荐
- cocos2dx命令行编译打包安卓apk ndk_root not defined
- Android ListView的优化
- contextLoaderListener和dispatcherServlet初始化上下文的区别
- java demo
- Select()在编程中的使用
- CSDN发表博客等操作点击按钮没反应
- Leetcode Valid number
- forever 使用
- 左旋转字符串
- Java 零基础跑起第一个程序
- FancyCoverFlow
- cocos2d-x CCScrollView和CCTableView的使用
- 和为S的两个数字
- Nginx+php+mysql+phpmyadmin centos6.x 配置教程
- Nginx配置文件详细说明
- android Hander 定时器的应用
- Test6001
- 编译打包安卓apk报错:软件包 org.cocos2dx.lib 不存在
- POJ 1922 解题报告
- JavaScript中产生标识符方式的演变