f[i][j]表示i点追j点的期望步数。。。

这题必须spfa不能bfs。

且复杂度不会炸(仅1000条边)

#include<iostream>
#include<cstdio>
#include<cstring>
#include<queue>
#include<algorithm>
#define maxv 1050
#define maxe 2050
#define inf 1000000007
#define eps 1e-6
using namespace std;
int n,m,b,t,x,y,g[maxv],nume=;
int d[maxv],p[maxv][maxv],dis[maxv];
double f[maxv][maxv];
bool vis[maxv];
queue <int> q;
struct edge
{
int v,nxt;
}e[maxe];
void addedge(int u,int v)
{
e[++nume].v=v;
e[nume].nxt=g[u];
g[u]=nume;
}
void reset()
{
for (int i=;i<=n;i++)
for (int j=;j<=n;j++)
p[i][j]=inf;
}
void pre_bfs(int x)
{
while (!q.empty()) q.pop();
for (int i=;i<=n;i++)
{
vis[i]=false;
dis[i]=inf;
}
dis[x]=;
for (int i=g[x];i;i=e[i].nxt)
{
int v=e[i].v;
vis[v]=true;dis[v]=;q.push(v);
p[x][v]=v;
}
while (!q.empty())
{
int head=q.front();q.pop();
for (int i=g[head];i;i=e[i].nxt)
{
int v=e[i].v;
if ((dis[v]>dis[head]+) || ((dis[v]==dis[head]+) && (p[x][v]>p[x][head])))
{
dis[v]=dis[head]+;
p[x][v]=p[x][head];
if (!vis[v]) q.push(v);
}
}
vis[head]=false;
}
return;
}
double dp(int x,int y)
{
if (x==y) return ;
if (f[x][y]>eps) return f[x][y];
if ((p[x][y]==y) || (p[p[x][y]][y]==y)) return ;
double ret=;
for (int i=g[y];i;i=e[i].nxt)
{
int v=e[i].v;
if (p[p[x][y]][y]==y) ret++;
else if (p[x][y]==y) ret++;
else ret+=dp(p[p[x][y]][y],v);
}
if (p[p[x][y]][y]==y) ret++;
else if (p[x][y]==y) ret++;
else ret+=dp(p[p[x][y]][y],y);
ret/=(d[y]+);ret=ret+;
f[x][y]=ret;
return ret;
}
int main()
{
memset(d,,sizeof(d));
scanf("%d%d",&n,&m);scanf("%d%d",&b,&t);
for (int i=;i<=m;i++)
{
scanf("%d%d",&x,&y);
addedge(x,y);addedge(y,x);
d[x]++;d[y]++;
}
reset();
for (int i=;i<=n;i++)
pre_bfs(i);
for (int i=;i<=n;i++) p[i][i]=inf;
printf("%.3lf\n",dp(b,t));
return ;
}

BZOJ 1415 聪聪和可可的更多相关文章

  1. BZOJ 1415: [Noi2005]聪聪和可可( 最短路 + 期望dp )

    用最短路暴力搞出s(i, j)表示聪聪在i, 可可在j处时聪聪会走的路线. 然后就可以dp了, dp(i, j) = [ dp(s(s(i,j), j), j) + Σdp(s(s(i,j), j), ...

  2. bzoj 1415 [Noi2005]聪聪和可可——其实无环的图上概率

    题目:https://www.lydsy.com/JudgeOnline/problem.php?id=1415 乍一看和“游走”一样.于是高斯消元.n^2状态,复杂度n^6…… 看看TJ,发现因为聪 ...

  3. BZOJ 1415 [NOI2005]聪聪与可可 (概率DP+dfs)

    题目大意:给你一个无向联通图,节点数n<=1000.聪聪有一个机器人从C点出发向在M点的可可移动,去追赶并吃掉可可,在单位时间内,机器人会先朝离可可最近的节点移动1步,如果移动一步机器人并不能吃 ...

  4. BZOJ 1415: [Noi2005]聪聪和可可 [DP 概率]

    传送门 题意:小兔子乖乖~~~ 题意·真:无向图吗,聪抓可,每个时间聪先走可后走,聪一次可以走两步,朝着里可最近且点编号最小的方向:可一次只一步,等概率走向相邻的点或不走 求聪抓住可的期望时间 和游走 ...

  5. bzoj 1415: [Noi2005]聪聪和可可 期望dp+记忆化搜索

    期望dp水题~ 你发现每一次肯定是贪心走 2 步,(只走一步的话就可能出现环) 然后令 $f[i][j]$ 表示聪在 $i$,可在 $j$,且聪先手两个人碰上面的期望最小次数. 用记忆化搜索转移就行了 ...

  6. bzoj 1415: [Noi2005]聪聪和可可

    直接上记忆化搜索 #include<queue> #include<cstdio> #include<algorithm> using namespace std; ...

  7. bzoj 1415: [Noi2005]聪聪和可可【期望dp+bfs】

    因为边权为1所以a直接bfs瞎搞就行--我一开始竟然写了个spfa #include<iostream> #include<cstdio> #include<queue& ...

  8. BZOJ 1415: [Noi2005]聪聪和可可(记忆化搜索+期望)

    传送门 解题思路 还是比较简答的一道题.首先\(bfs\)把每个点到其他点的最短路求出来,然后再记忆化搜索.记搜的时候猫的走法是确定的,搜一下老鼠走法就行了. 代码 #include<iostr ...

  9. 【BZOJ】【1415】【NOI2005】聪聪和可可

    数学期望+记忆化搜索 论文:<浅析竞赛中一类数学期望问题的解决方法>——汤可因  中的第一题…… Orz 黄学长 我实在是太弱,这么简单都yy不出来…… 宽搜预处理有点spfa的感觉= = ...

  10. 【BZOJ 1415】 1415: [Noi2005]聪聪和可可 (bfs+记忆化搜索+期望)

    1415: [Noi2005]聪聪和可可 Time Limit: 10 Sec  Memory Limit: 162 MBSubmit: 1640  Solved: 962 Description I ...

随机推荐

  1. 机器学习在 IT 运维管理中的必要性!

    机器学习技术在监控工具中的应用已经成为 IT 运维与 DevOps 团队的一大热点话题.尽管相关的使用案例很多,对 IT 团队而已真正的「杀手级应用」是机器学习如何提高实时事件管理能力,从而帮助较大规 ...

  2. CRM-性能测试报告

    1.     概述 1.1.    测试目的 CRM系统性能测试是针对系统并发处理能力.交易响应时间等性能指标所进行的验证性测试.目的是尽可能地模拟生产环境的前提下,实现以下目标: 获取上线版本测试需 ...

  3. java 分割split

    1.如果用“.”作为分隔的话,必须是如下写法:String.split("\\."),这样才能正确的分隔开,不能用String.split(".");2.如果用 ...

  4. http://www.cnblogs.com/flyoung2008/archive/2013/08/11/3251148.html

    http://www.cnblogs.com/flyoung2008/archive/2013/08/11/3251148.html

  5. SSH连接不上Linux的解决方法

    SSH连接不上Linux的解决方法: 连续弄了几次,今天早上终于把SSH连接虚拟机连接不通的问题解决了. 先简单说下概要: 主机装的是XP系统,虚拟机用的是red hat Linux. 我用的是nat ...

  6. Unable to open debugger port : java.net.ConnectException “Connection refused”

    http://stackoverflow.com/questions/28283087/unable-to-open-debugger-port-java-net-connectexception-c ...

  7. iOS 开发--多线程

    前面在<Bison眼中的iOS开发多线程是这样的(二)>一文中讲完了多线程的NSThread,不难发现这种方式的多线程实现起来非常的复杂,为了简化多线程的开发,iOS提供了GCD来实现多线 ...

  8. VCC、VDD、VEE、VSS等有关电源标注的区别

    Almost all integrated circuits (ICs) have at least two pins which connect to the power rails of the ...

  9. 把Message转换成String

    把Message转换成String注意,这里欠缺CM消息和CN消息,因为它们不是系统消息,不经过Dispatch API转发,但是可以把它们写在WndProc里,这样SendMessage送来的消息也 ...

  10. 【查找结构4】红黑树 [RBT]

    红黑树的性质与定义 红黑树(red-black tree) 是一棵满足下述性质的二叉查找树: 1. 每一个结点要么是红色,要么是黑色. 2. 根结点是黑色的. 3. 所有叶子结点都是黑色的(实际上都是 ...