题目: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 ;
}

最新文章

  1. JDBC成绩管理系统
  2. MIConvexHull
  3. Windows服务程序和安装程序制作
  4. python 赋值,交换值理解
  5. poj 1364 King(差分约束)
  6. 利用android studio gsonformat插件快速解析复杂json
  7. Codeforces Round #359 div2
  8. 【转】手机web——自适应网页设计(html/css控制)
  9. for in 的各种坑
  10. 正确、安全地停止SpringBoot应用服务
  11. margin-top导致父标签偏移问题
  12. ImageMagick - 智能的灰度空间(GRAYColorspace)让人窒息
  13. PTA L1题目合集(更新至2019.3)
  14. nodejs 癞子麻将
  15. use right spindle drive
  16. Office处理
  17. HTTPS-加密SSL证书
  18. CSS3&amp;HTML5各浏览器支持情况一览表
  19. Ubuntu下Sublime Text 2优化配置
  20. 【资料】wod书籍

热门文章

  1. c++基础_01字串
  2. Python之购物车
  3. PAT 1077. 互评成绩计算
  4. C++标准模板库 ——堆栈使用
  5. 开启POP3/SMTP服务
  6. 创建私有 Gems 源
  7. HDU 3749 Financial Crisis(点-双连通分量)
  8. CURL不可以读写文件
  9. Codeforces 651C Watchmen【模拟】
  10. UVa 12563_Jin Ge Jin Qu hao