右侧是1。维护的同时保持最短路p值至少,我有直接存款(1-p)。该概率不满足,为了使这个值极大。

#include <iostream>
#include <cstdlib>
#include <cstring>
#include <string>
#include <cstdio>
#include <cmath>
#include <algorithm>
#include <vector>
#include <queue>
#include <map>
#define inf 0x3f3f3f3f
#define eps 1e-6
#define ll long long
const int maxn=100010;
const int maxm=100010;
using namespace std; struct node
{
int v,w,next;
double p;
}e[maxm<<1];
int vis[maxn],h,head[maxn],n,m,d[maxn],pre[maxn];
double p[maxn]; void addedge(int a,int b,double c)
{
e[h].v=b;
e[h].w=1;
e[h].p=c;
e[h].next=head[a];
head[a]=h++;
} void spfa(int s)
{
int x,v,i;
for(i=0;i<=n;i++)
p[i]=0,d[i]=inf;
memset(vis,0,sizeof vis);
memset(pre,-1,sizeof pre);
p[s]=1,vis[s]=1,d[s]=0;
queue<int> q;
q.push(s);
while(!q.empty())
{
x=q.front();
q.pop();
vis[x]=0;
for(i=head[x];i!=-1;i=e[i].next)
{
v=e[i].v;
if(d[v]>d[x]+1)
{
d[v]=d[x]+1;
p[v]=p[x]*e[i].p;
pre[v]=x;
if(!vis[v])
{
vis[v]=1;
q.push(v);
}
}
else if(d[v]==d[x]+1)
{
if(p[v]<p[x]*e[i].p)
{
p[v]=p[x]*e[i].p;
pre[v]=x;
if(!vis[v])
{
vis[v]=1;
q.push(v);
}
}
}
}
}
return ;
}
int flag;
void output(int x)
{
if(pre[x]!=-1)
output(pre[x]);
if(flag) flag=0;
else putchar(' ');
printf("%d",x);
} int main()
{
int a,b,s,t;
double c;
while(~scanf("%d%d",&n,&m))
{
h=0;
memset(head,-1,sizeof head);
scanf("%d%d",&s,&t);
while(m--)
{
scanf("%d%d%lf",&a,&b,&c);
addedge(a,b,1-c/100);
addedge(b,a,1-c/100);
}
spfa(s);
printf("%d %.8lf\n",d[t]+1,1-p[t]);
flag=1;
output(t);
puts("");
}
return 0;
}

版权声明:本文博主原创文章。博客,未经同意不得转载。

最新文章

  1. ListView+CheckBox实现全选 单击效果
  2. Linux环境下Nginx配置安装PHP
  3. 基于struts2、spring的应用闲置一段时间后报空指针错(转)
  4. Selenium2+python自动化20-Excel数据参数化
  5. css让浮动元素水平居中
  6. 【BZOJ】1600: [Usaco2008 Oct]建造栅栏(dp)
  7. Main函数参数argc,argv说明
  8. 4.3、Libgdx启动类和配置
  9. Asp.Net MVC使用ViewData导致双引号被转义的解决方法
  10. 炼数成金hadoop视频干货06-10
  11. 用PS画一个齿轮
  12. ajax jquery return没有返回值
  13. 九、cocos2dx之Actions
  14. JAVA实用案例之图片水印开发
  15. 关于JAVA开发工具IDEA使用
  16. Unity Rain Ai 插件基本使用(二)
  17. GIT 版本管理-github&amp;码云
  18. python全栈开发day76-博客主页
  19. [IR] Bigtable: A Distributed Storage System for Semi-Structured Data
  20. javascript快速排序的思考

热门文章

  1. Swift - 区间运算符(... 和 ..&lt;)
  2. 高级Bash脚本编程指南(27):文本处理命令(三)
  3. BestCoder Round #3HDU 4907
  4. 指尖上的电商---(12)SolrAdmin中加入多核的还有一种方法
  5. opencv MAT数据操作
  6. kill命令&quot;-1&quot;这个参数到底是杀进程还是reload?(转)
  7. ExtJS学习-----------Ext.Array,ExtJS对javascript中的Array的扩展
  8. JAVA必备——13个核心规范
  9. NavigationBar 隐藏底部边线,阴影
  10. RGB與CIELAB色彩空間轉換