http://acm.hdu.edu.cn/showproblem.php?pid=5001

给定n个点m条边的无向图问从任意点出发任意走d步,从不经过某个点的概率

本想先算路过每个点的概率然后用1减去这个概率  但是由于可以重复路过  所以无法判断是不是第一次经过这个点

所以我们应该直接做不路过的概率  即类似bfs的一步步走  如果走到了要计算的点就停下来  意思就是除了要计算概率的那个点不能走以外  其他都能走  最后统计下概率的和就是不路过这个点的概率

#include <cstdio>
#include <cstdlib>
#include <cmath>
#include <cstring>
#include <string>
#include <queue>
#include <vector>
#include<map>
#include <iostream>
#include <algorithm>
using namespace std;
#define RD(x) scanf("%d",&x)
#define RD2(x,y) scanf("%d%d",&x,&y)
#define clr0(x) memset(x,0,sizeof(x))
typedef long long LL;
typedef pair<int,int> pii;
const double INF=2100000000;
int n,m,D;
vector<int> g[55];
double dp[55][10050];
int main()
{
int _,u,v;
RD(_);
while(_--){
RD(n);RD2(m,D);
for(int i = 1;i <= n;++i) g[i].clear();
for(int i = 1;i <= m;++i){
RD2(u,v);
g[u].push_back(v);
g[v].push_back(u);
}
double ans;
for(int i = 1;i <= n;++i){
clr0(dp);
ans = 0;
for(int d = 0;d <= D;++d){
if(!d){
for(int j = 1;j <= n;++j)if(i != j){
dp[j][0] = 1.0/(double)n;
}
}
else{
for(int j = 1;j <= n;++j)if(i != j){
for(int k = 0;k < g[j].size();++k){
int m = g[j][k];
if(m != i)
dp[j][d] += dp[m][d-1]/(double)g[m].size();
}
}
}
}
for(int j = 1;j <= n;++j)if(i != j){
ans += dp[j][D];
}
printf("%.9lf\n",ans);
}
}
return 0 ;
}

hdu 5001 从任意点出发任意走d步不经过某点概率的更多相关文章

  1. Hdu 5001 Walk 概率dp

    Walk Time Limit: 1 Sec Memory Limit: 256 MB 题目连接 http://acm.hdu.edu.cn/showproblem.php?pid=5001 Desc ...

  2. dedecms在任意页面调用任意栏目文章

    dedecms在任意页面调用任意栏目文章,我们用arclist标签即可实现.如果是调用多个栏目文章可以给typeid多个值. 我们以调用ID为1和ID为30的两个栏目下5篇文章为例: {dede:ar ...

  3. [No000018E]Vim快速跳转任意行、任意列以及高亮显示当前行、当前列方法-Vim使用技巧(3)

    vim提供了丰富的快速跳转任意行.任意列的方法,方便高效地移动光标,定位文件位置. 一.Vim行跳转 使用vim查看文件时,使用以下命令可以快速跳转文件首.尾行,方便对整个文件有个全局把握. 1.1 ...

  4. Java 将任意数组的任意两个位置的数据进行交换

    package yw.fanxing; /** * 自定义泛型测试 * * 写一个方法,将任意数组的任意两个位置的数据进行交换 * * @author yw-tony * */ public clas ...

  5. 使用css实现任意大小,任意方向, 任意角度的箭头

    使用css实现任意大小,任意方向, 任意角度的箭头 网页开发中,经常会使用到 下拉箭头,右侧箭头 这样的箭头. 一般用css来实现: { display: inline-block; margin: ...

  6. 在图片不被裁剪时opencv绕图片中任意点旋转任意角度

    opencv绕图片中任意角度旋转任意角度   最近在做项目需要把把图片绕图片中任意点旋转任意角度,考虑到自己旋转需要编写插值算法,所以想到了用opencv,但是网上都是围绕图片中点旋转任意角度的,都是 ...

  7. HDU 5001 Walk

    解题思路:这是一道简单的概率dp,只要处理好相关的细节就可以了. dp[d][i]表示走d步时走到i的改概率,具体参考代码: #include<cstdio> #include<cs ...

  8. HDU 5001 概率DP || 记忆化搜索

    2014 ACM/ICPC Asia Regional Anshan Online 给N个点,M条边组成的图,每一步能够从一个点走到相邻任一点,概率同样,问D步后没走到过每一个点的概率 概率DP  測 ...

  9. HDU 5001 Walk (暴力、概率dp)

    Walk Time Limit: 30000/15000 MS (Java/Others)    Memory Limit: 65536/65536 K (Java/Others) Total Sub ...

随机推荐

  1. delphi实现两个目录路径的链接

    filepath := PathJoin(['C:', 'path1', 'path2\', 'a.doc']); // filepath = 'C:\path1\path2\a.doc' 代码: f ...

  2. Tensorflow从文件读取数据

    http://blog.csdn.net/zengxyuyu/article/details/53289906

  3. Centos 安装Mongo DB

    NOSQL在很短的时间里使用人数据高涨,这不仅是它提出的一种新存储思想,更是因为它在对大数据做操作的效率,明显高于关系数据库 工具/原料   接入Internet的一台Centos计算机 下载安装文件 ...

  4. webpack 构建同时适用于手机和电脑的调试服务器

    plugins plugins: [ new HtmlWebpackPlugin({ // 使用模板同时生成 pc.html和mobile.html title: 'pc', filename: 'p ...

  5. 日志记录发布网站之后不成功,对路径“C:\Inetpub\wwwroot\***\***.xls”的访问被拒绝。

    主要是web程序的根目录文件夹路径访问权限不够,新增加一个everyone的完全控制读写的权限即可!---------折磨了两天,才发现使劲使错了地方. 另外: 一定谨记!!!!! 所写的路径如果不存 ...

  6. db2表空间及日志文件调整

    1.SQLState '57011' and errorCode '-964'  原因:数据库的日志文件已满  解决方法:修改日志文件大小(加大),增加日志文件个数,增加辅助日志文件个数(三个修改参数 ...

  7. 201621123008 《Java程序设计》第二周学习总结

    1. 本周学习总结 通过查询API掌握了一下几种类的基本用法: String类 StringBuilder类 ArrayList类 BigInteger类 BigDecimal类 Arrays类 认知 ...

  8. Laravel Nginx 站点配置文件(Homestead)

    server {     listen 80;     listen 443 ssl http2;     server_name fmtmis.local;     root "/home ...

  9. 如何在c语言中源文件调用另一个源文件的函数

    在源文件A1.c中调用A2.c 中的函数有两种方法: 1.在A2.c中有完整的函数定义,在A1.c中添加一下要用到的函数原型(声明)就可以了,例如:在A2.c中:有函数void A2(){...};在 ...

  10. Hadoop 系列(二)安装配置

    Hadoop 系列(二)安装配置 Hadoop 官网:http://hadoop.apache.or 一.Hadoop 安装 1.1 Hadoop 依赖的组件 JDK :从 Oracle 官网下载,设 ...