右侧是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;
}

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

转载于:https://www.cnblogs.com/zfyouxi/p/4912371.html

URAL 1934 Black Spot --- 最短的简单修改相关推荐

  1. PC端阴阳师 加长百鬼夜行舞台 如何简单修改分辨率

    PC端阴阳师 加长百鬼夜行舞台 如何简单修改分辨率 首先找到安装目录,如图为Onmyoji的文件夹 打开,找到neox.xml这个文件(没有显示后缀名的则是是neox) 然后,记得最重要的,是备份这个 ...

  2. 简单修改红帽、centos路由及静态路由表

    这里写自定义目录标题 简单修改静态路由表 先通过查看系统启动文件里的路由配置 然后执行这个文件 检查即时路由表 简单修改静态路由表 先通过查看系统启动文件里的路由配置 cat /etc/rc.loca ...

  3. S3C2440移植linux3.4.2内核之内核框架介绍及简单修改

    文章目录 uboot启动内核分析 简单配置内核 编译内核 设置机器ID 修改晶振 移植Linux3.4.2内核其他文章链接: S3C2440移植linux3.4.2内核之内核框架介绍及简单修改 S3C ...

  4. 自己动手,丰衣足食 | 记录对OBS-Studio主题的简单修改

    自己动手,丰衣足食 | 记录对OBS-Studio主题的简单修改 事由 1.工具准备 2.过程记录 事由   朋友开直播,应邀连麦.挺长时间没用OBS-Studio,一打开就提示有更新,更新后发现OB ...

  5. 自己动手制作植物大战僵尸简单修改器(2)

    自己动手制作植物大战僵尸简单修改器2 地上物品自动拾取 地上物品自动拾取 上次的内容自己动手制作植物大战僵尸简单修改器 地上物品的地址是 0x006A9EC0 + 0x768 + 0xe4 + 0xd ...

  6. java修改文件名_Java实现简单修改文件名的方法分析

    本文实例讲述了Java实现简单修改文件名的方法.分享给大家供大家参考,具体如下: 今天帮朋些个网站,做到商品上传的时候需要给文件重新设置名称,以前也做过类的功能,只是没有保存忘了,为了避免以后再重新找 ...

  7. win10计算机盘符如何,win10磁盘盘符怎么修改?教你简单修改win10磁盘盘符的方法...

    一般电脑磁盘盘符是使用26个英文字符加上一个冒号:来标识,部分追求个性化的小伙伴想把win10系统盘符更改成自己想要的符号,这要怎么修改?想自己摸索又觉得太麻烦.针对此问题,本文告诉大家一招简单修改w ...

  8. 使用ps去快速简单修改图像分辨率DPI为300并不改变原图尺寸大小的方法

    使用ps去快速简单修改图像分辨率DPI为300并不改变原图尺寸大小的方法分享_哔哩哔哩_bilibili

  9. 自己动手制作植物大战僵尸简单修改器(3)

    自己动手制作植物大战僵尸简单修改器3 目的 过程 找到阳光地址 获取修改阳光的指令 找到自动汇编窗口 找到代码注入 改变阳光增量 结果 目的 这一篇并不是制作,改变每一次捡起阳光时阳光增加量. 过程 ...

  10. linux 3.4内核初始化,S3C2440移植linux3.4.2内核之内核框架介绍及简单修改

    @[TOC] uboot启动内核分析 进入cmd_bootm.c,找到对应的bootm命令对应的do_bootm():int do_bootm(cmd_tbl_t *cmdtp, int flag, ...

最新文章

  1. mysql循环队列_数据结构:循环队列
  2. 方维O2O系统 后台业务员功能开发
  3. C语言文字加密程序的实现
  4. 关于.NET Core是否应该支持WCF Hosting的争论
  5. 数据告诉你,抖音是如何在半年之内逆袭的
  6. Git 基础(八)—— 分支管理
  7. python游戏编程之环境配置
  8. linux 计划任务的使用
  9. 装了V2.6.41,C4D启动卡死在初始化插件页面,装了RS后C4D无法启动,C4D用什么版本的RS?
  10. 什么是物联网?物联网与互联网的区别是什么
  11. checked 和selected 的区别
  12. win10 文件系统错误-2147416359
  13. ios系统软件迁移到安卓_教你把ios系统移植到安卓手机
  14. 谷歌自动驾驶正式入华,能否掀起“鲶鱼效应”?
  15. 关于oem7grub 0.4.4 2009-11-18,memory:639k/30 的问题的解决
  16. 2020604 Java基础复习
  17. nyoj 284 坦克大战
  18. 护眼灯到底有没有护眼的效果?2022护眼儿童台灯选哪个牌子好
  19. 用FL Studio基础版制作一首完整的电音
  20. E:\python项目\图片处理PopenCV>pip install opencv-pythonRequirement already satisfied: opencv-python in e:

热门文章

  1. 对数字信号处理中各种频率以及分辨率的理解
  2. 【Linux】最常用命令:简单易学,但能解决95%以上的问题
  3. Leetcode重点题
  4. docker打包部署flask镜像
  5. 吴恩达深度学习——超参数调优
  6. 博文荐书:阿里运维、Java微服务、Scala编程
  7. 用Docker构建与环境无关的系统
  8. 生命的书写,梦想的呈现
  9. 征服RIA:函数式编程的原理
  10. ASP.NET 3.5控件和组件开发技术之客户端回发/回调揭密