Leetcode 1514 概率最大的路径

文章目录

  • 1. 题目描述
  • 2. 我的尝试

1. 题目描述

原题链接:Leetcode 1514 概率最大的路径

给你一个由 n 个节点(下标从 0 开始)组成的无向加权图,该图由一个描述边的列表组成,其中 edges[i] = [a, b] 表示连接节点 ab 的一条无向边,且该边遍历成功的概率为 succProb[i]

指定两个节点分别作为起点 start 和终点 end ,请你找出从起点到终点成功概率最大的路径,并返回其成功概率。

如果不存在从 startend 的路径,请 返回 0 。只要答案与标准答案的误差不超过 1e-5 ,就会被视作正确答案。

在这里插入图片描述

2. 我的尝试

该题本质上是一个单源汇最短路问题。每条边的长度就是该边遍历成功的概率,两点之间的路径长度就等于该路径上各边概率的乘积。这样,求 startend 的最大概率就相当于求 startend 的最短路。题目保证了各边概率不超过1,相当于保证了无负权值的边

求解单源汇无负权值的最短路问题,可以使用dijkstra算法。本题中节点个数 n 和边的个数 m 的范围分别是 2 ≤ n ≤ 1 0 4 2 \leq n \leq10^4 2n104 0 ≤ m ≤ 2 ∗ 1 0 4 0 \leq m \leq 2*10^4 0m2104 ,即节点个数与边的个数数量级相当,为稀疏图,因此考虑使用堆优化版本的dijkstra算法。时间复杂度为 O ( m × l o g ( n ) ) O(m \times log(n)) O(m×log(n))

const int N = 1e4 + 10;
const int M = 4e4 + 10;class Solution {
public:int h[N], e[M], ne[M], idx;double w[M], d[N];bool st[N];priority_queue<pair<double, int>> heap;void add(int a, int b, double c) {e[idx] = b;w[idx] = c;ne[idx] = h[a];h[a] = idx ++;}double dijkstra(int start, int end) {for (int i = 0; i < end; i ++) d[i] = 0;d[start] = 1;heap.push({1, start});while (heap.size()) {auto t = heap.top();heap.pop();double dist = t.first;int ver = t.second;if (st[ver]) continue;st[ver] = true;for (int i = h[ver]; i != -1; i = ne[i]) {int j = e[i];if (d[j] < d[ver] * w[i]) {d[j] = d[ver] * w[i];heap.push({d[j], j});}}}return d[end];}double maxProbability(int n, vector<vector<int>>& edges, vector<double>& succProb, int start_node, int end_node) {int m = edges.size();memset(h, -1, sizeof h);for (int i = 0; i < m; i++) {int a = edges[i][0], b = edges[i][1];double c = succProb[i];add(a, b, c);add(b, a, c);}return dijkstra(start_node, end_node);}
};

在这里插入图片描述

本文来自互联网用户投稿,该文观点仅代表作者本人,不代表本站立场。本站仅提供信息存储空间服务,不拥有所有权,不承担相关法律责任。如若转载,请注明出处:http://www.mzph.cn/news/748880.shtml

如若内容造成侵权/违法违规/事实不符,请联系多彩编程网进行投诉反馈email:809451989@qq.com,一经查实,立即删除!

相关文章

HTML静态网页成品作业(HTML+CSS)——非遗昆曲介绍设计制作(1个页面)

&#x1f389;不定期分享源码&#xff0c;关注不丢失哦 文章目录 一、作品介绍二、作品演示三、代码目录四、网站代码HTML部分代码 五、源码获取 一、作品介绍 &#x1f3f7;️本套采用HTMLCSS&#xff0c;未使用Javacsript代码&#xff0c;共有1个页面。 二、作品演示 三、代…

【测试开发学习历程】在CentOS7上安装Docker

前言&#xff1a; 内容进入到Docker的时间虽然不是特别长&#xff0c; 但是呢在虚拟机上安装Docker的步骤还是不能少&#xff0c; 因为自己以后也是可能用到这个东西的。 注意&#xff0c;下文中提到的保存退出的命令是&#xff1a; :wq 如果要编辑文件的步骤&#xff0c;…

CIDR网络地址、广播地址、网段区间计算说明与计算工具

文章目录 开始问题参考答案 答案解析计算工具测试 开始 好久没有看计算网络&#xff0c;感觉已经完全返给老师了。 最近&#xff0c;有同事遇到个问题&#xff0c;网络一直不对&#xff0c;又开始重新看一下。 相信很多朋友长时间不看也忘了&#xff0c;所以&#xff0c;这里…

web学习笔记(三十三)

目录 1.严格模式 1.1严格模式的概念&#xff1a; 1.2严格模式在语义上更改的地方&#xff1a; 1.3如何开启严格模式 1.4严格模式应用上的变化 2.原型链 1.严格模式 1.1严格模式的概念&#xff1a; 严格模式有点像es5向es6过渡而产生的一种模式&#xff0c;因为es6的语法…

Spring项目问题—前后端交互:Method Not Allowed

问题 前后端交互时出现Method Not Allowed问题 Ajax中使用的是get&#xff0c;方法仍然出现post方法报错 Resolved [org.springframework.web.HttpRequestMethodNotSupportedException: Request method POST not supported] 浏览器中没有报错&#xff0c;只是接收不到后端返…

C++:类与对象(中)

一、构造函数 1.1特性 构造函数是特殊的成员函数&#xff0c;需要注意的是&#xff0c;构造函数的虽然名称叫构造&#xff0c;但是需要注意的是构造函数的主要任务并不是开空间创建对象&#xff0c;而是初始化对象。 1. 函数名与类名相同。 2. 无返回值。 3. 对象实例化时编…

RPC通信原理(一)

RPC通信原理 RPC的概念 如果现在我有一个电商项目&#xff0c;用户要查询订单&#xff0c;自然而然是通过Service接口来调用订单的实现类。 我们把用户模块和订单模块都放在一起&#xff0c;打包成一个war包&#xff0c;然后再tomcat上运行&#xff0c;tomcat占有一个进程&am…

Learn OpenGL 13 模板测试

模板测试 当片段着色器处理完一个片段之后&#xff0c;模板测试(Stencil Test)会开始执行&#xff0c;和深度测试一样&#xff0c;它也可能会丢弃片段。接下来&#xff0c;被保留的片段会进入深度测试&#xff0c;它可能会丢弃更多的片段。模板测试是根据又一个缓冲来进行的&a…

python爬虫-AES.CBS加密案例(mmz批量爬取)

下载mmz本页数据 批量下载请看主页&#xff01;&#xff01;&#xff01; 代码&#xff1a; import requests from Crypto.Cipher import AES import base64cookies {PHPSESSID: 48nu182kdlsmgfo2g7hl6eufsa,Hm_lvt_6cd598ca665714ffcd8aca3aafc5e0dc: 1710568549,SECKEY_A…

MySql入门教程--MySQL数据库基础操作

꒰˃͈꒵˂͈꒱ write in front ꒰˃͈꒵˂͈꒱ ʕ̯•͡˔•̯᷅ʔ大家好&#xff0c;我是xiaoxie.希望你看完之后,有不足之处请多多谅解&#xff0c;让我们一起共同进步૮₍❀ᴗ͈ . ᴗ͈ აxiaoxieʕ̯•͡˔•̯᷅ʔ—CSDN博客 本文由xiaoxieʕ̯•͡˔•̯᷅ʔ 原创 CSDN …

Typora设置文本颜色

目录 总共分为三种方法 1.使用markdown语法的内联公式 2.使用HTML语法 3.借助第三方软件&#xff08;不建议&#xff0c;操作没那么顺滑&#xff09; 总共分为三种方法 1.使用markdown语法的内联公式 <1>首先需要在设置中勾选Markdown扩展语法下的内联公式&#xff…

【计算机系统结构】重叠方式

&#x1f4dd;本文介绍 本文主要内容位计算机系统结构的重叠方式 &#x1f44b;作者简介&#xff1a;一个正在积极探索的本科生 &#x1f4f1;联系方式&#xff1a;943641266(QQ) &#x1f6aa;Github地址&#xff1a;https://github.com/sankexilianhua &#x1f511;Gitee地址…

深入浅出落地应用分析:AI数字人「微软小冰」

hi,各位,今天要聊的是AI小冰,机缘巧合,投递了这家公司的产品,正好最近在看数字人相关的,就详细剖析下这款产品! 前言 小冰,全称为北京红棉小冰科技有限公司,前身为微软(亚洲)互联网工程院人工智能小冰团队,是微软全球最大的人工智能独立产品研发团队。作为微软全…

Redis中的缓存设计

缓存穿透 缓存穿透是指查询一个根本不存在的数据&#xff0c;缓存层和存储层都不会命中&#xff0c;通常处于容错的考虑&#xff0c;如果从存储层查不到数据则不写入缓存层。缓存穿透将导致不存在的数据每次请求都要到存储层去查询&#xff0c;失去了缓存保护后端存储的意义。…

mysql5.7离线安装 windows

windows上离线安装mysql5.7 下载安装包 去官网下载对应版本的mysql官网 点击archives,接着选择自己要下载的版本&#xff0c;选择windows系统&#xff0c;并根据自己电脑的位数选择相应的版本【找到“此电脑”&#xff0c;鼠标右击&#xff0c;出来下拉框&#xff0c;选择“属性…

【django framework】ModelSerializer+GenericAPIView接口数据流

GenericAPIView数据从序列化到最终返回响应的数据流 // 以ModelSerializergenerics.CreateAPIView为例 程序终归是为了处理数据&#xff0c;怎么处理&#xff0c;以怎样的顺序和方法去处理&#xff0c;就涉及到了具体的业务流程。当我们是用了一个牛掰的框架&#xff0c;发现原…

考察c语言关键字

C语言——关键字 1.问题&#xff1a;简述goto语句的作用 答&#xff1a;无条件跳转 具体来说&#xff0c;其作用在于允许程序在执行时无条件地跳转到指定的标签位置&#xff0c;并从该标签位置继续执行。通过goto语句&#xff0c;可以实现程序流程的无条件转移&#xff0c;使得…

使用PWM实现呼吸灯功能

CC表示的意思位捕获比较&#xff0c;CCR表示的是捕获比较寄存器 占空比等效于PWM模拟出来的电压的多少&#xff0c;占空比越大等效出的模拟电压越趋近于高电平&#xff0c;占空比越小等效出来的模拟电压越趋近于低电平&#xff0c;分辨率表示的是占空比变化的精细程度&#xf…

离线安装docker、docker-compose、Mysql镜像

离线安装docker docker-compose mysql镜像 一、下载docker docker-compose mysql 镜像文件 1、首先下载docker镜像 博主所用文件版本号&#xff1a; docker-23.0.6.tgz 下载docker 地址 &#xff1a;https://blog.csdn.net/xiaohanshasha/article/details/135489623?spm1001…

【Hadoop大数据技术】——MapReduce经典案例实战(倒排索引、数据去重、TopN)

&#x1f4d6; 前言&#xff1a;MapReduce是一种分布式并行编程模型&#xff0c;是Hadoop核心子项目之一。实验前需确保搭建好Hadoop 3.3.5环境、安装好Eclipse IDE &#x1f50e; 【Hadoop大数据技术】——Hadoop概述与搭建环境&#xff08;学习笔记&#xff09; 目录 &#…