bzoj1415 [Noi2005]聪聪和可可——概率期望
2024-09-07 10:37:09
题目:https://www.lydsy.com/JudgeOnline/problem.php?id=1415
看博客:http://www.cnblogs.com/Narh/p/9206642.html
看博客:https://blog.csdn.net/clove_unique/article/details/62237321
代码如下:
#include<iostream>
#include<cstdio>
#include<cstring>
#include<queue>
using namespace std;
int const maxn=;
int n,m,cc,kk,head[maxn],ct,dis[maxn][maxn],goal[maxn][maxn],inf;
double d[maxn],f[maxn][maxn],ans;
queue<int>q;
struct N{
int to,next;
N(int t=,int n=):to(t),next(n) {}
}edge[maxn<<];
void add(int x,int y){edge[++ct]=N(y,head[x]); head[x]=ct;}
void bfs(int s)
{
while(q.size())q.pop();
dis[s][s]=; q.push(s);
while(q.size())
{
int x=q.front(); q.pop();
for(int i=head[x];i;i=edge[i].next)
{
int u=edge[i].to;
if(dis[s][u]==inf)
{
dis[s][u]=dis[s][x]+;
q.push(u);
}
}
}
}
double dfs(int c,int k)
{
if(f[c][k]>=)return f[c][k];
if(c==k)return f[c][k]=;
if(dis[c][k]<=)return f[c][k]=;
double P=1.0/(d[k]+1.0);
f[c][k]=;//
int to=goal[c][k];
for(int i=head[k];i;i=edge[i].next)
f[c][k]+=P*dfs(to,edge[i].to);
f[c][k]+=P*dfs(to,k);
return f[c][k];
}
int main()
{
scanf("%d%d%d%d",&n,&m,&cc,&kk);
for(int i=,x,y;i<=m;i++)
{
scanf("%d%d",&x,&y);
add(x,y); add(y,x);
d[x]+=1.0; d[y]+=1.0;
}
memset(dis,0x3f,sizeof dis); inf=dis[][];
for(int i=;i<=n;i++)bfs(i);
for(int i=;i<=n;i++)//cc
for(int j=;j<=n;j++)//kk
{
if(dis[i][j]==inf)continue;
if(dis[i][j]<=){goal[i][j]=j; continue;}
int mx=inf,t=inf;
for(int k=head[i];k;k=edge[k].next)
{
int u=edge[k].to;
if(dis[u][j]<mx || (dis[u][j]==mx&&u<t))mx=dis[u][j],t=u;
}
int mx2=inf,t2=inf;
for(int k=head[t];k;k=edge[k].next)
{
int u=edge[k].to;
if(dis[u][j]<mx2 || (dis[u][j]==mx2&&u<t2))mx2=dis[u][j],t2=u;
}
goal[i][j]=t2;
}
memset(f,-,sizeof f);
ans=dfs(cc,kk);
printf("%.3lf",ans);
return ;
}
最新文章
- JDBC成绩管理系统
- MIConvexHull
- Windows服务程序和安装程序制作
- python 赋值,交换值理解
- poj 1364 King(差分约束)
- 利用android studio gsonformat插件快速解析复杂json
- Codeforces Round #359 div2
- 【转】手机web——自适应网页设计(html/css控制)
- for in 的各种坑
- 正确、安全地停止SpringBoot应用服务
- margin-top导致父标签偏移问题
- ImageMagick - 智能的灰度空间(GRAYColorspace)让人窒息
- PTA L1题目合集(更新至2019.3)
- nodejs 癞子麻将
- use right spindle drive
- Office处理
- HTTPS-加密SSL证书
- CSS3&;HTML5各浏览器支持情况一览表
- Ubuntu下Sublime Text 2优化配置
- 【资料】wod书籍