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.hqwc.cn/news/538475.html

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

相关文章

【C++】inline内联函数 VS #define宏

文章目录 1. 内联概念2. 内联特点3. 宏的优缺点 1. 内联概念 以inline修饰的函数叫做内联函数&#xff0c;编译时C编译器会在调用内联函数的地方展开&#xff0c;无函数建立栈帧的开销&#xff0c;内联函数提升程序运行的效率。 在release模式下&#xff0c;默认展开生效。 在…

力扣 322 零钱兑换

题目描述 给定不同面额的硬币 coins 和一个总金额 amount。编写一个函数来计算可以凑成总金额所需的最少的硬币个数。如果没有任何一种硬币组合能组成总金额&#xff0c;返回 -1。 你可以认为每种硬币的数量是无限的。 示例 1&#xff1a; 输入&#xff1a;coins [1, 2, 5…

No transform from [base_footprint] to [base_link]

需要查看这两个坐标系之间的转换 果然&#xff0c;demo05_car_base中父坐标系是base_footprint&#xff0c;意思是从base_footprint到base_link的转换&#xff0c;而不是从固定坐标系base_link到base_footprint 修改&#xff1a; 父坐标系修改成base_link即可

【Java 并发】AbstractQueuedSynchronizer

1 AQS 简介 在同步组件的实现中, AQS 是核心部分, 同步组件的实现者通过使用 AQS 提供的模板方法实现同步组件语义。 AQS 则实现了对同步状态的管理, 以及对阻塞线程进行排队, 等待通知等一些底层的实现处理。 AQS 的核心也包括了这些方面: 同步队列, 独占式锁的获取和释放, 共…

【SpringBoot】自定义工具类实现Excel数据新建表存入MySQL数据库

&#x1f3e1;浩泽学编程&#xff1a;个人主页 &#x1f525; 推荐专栏&#xff1a;《深入浅出SpringBoot》《java对AI的调用开发》 《RabbitMQ》《Spring》《SpringMVC》《项目实战》 &#x1f6f8;学无止境&#xff0c;不骄不躁&#xff0c;知行合一 文章目录 …

2024年最新腾讯云优惠券获得方法整理

腾讯云作为国内领先的云服务提供商&#xff0c;其优质的产品和服务深受用户喜爱。而腾讯云优惠券则是用户在使用腾讯云服务时能够享受到的一项福利&#xff0c;可以有效降低上云成本。那么&#xff0c;2024年如何获得腾讯云优惠券呢&#xff1f;本文将为大家详细整理最新腾讯云…

蓝桥杯练习:景区导游

视频 UP主的博客 暴力做法&#xff0c;能过 42%数据。如果内存开 1e410 能过 40%&#xff0c;如果开 2e510就只能过 25% #include<bits/stdc.h> #define int long long #define endl \n const int N 1e410; using namespace std; //存两点的距离 typedef pair<in…

【C++基础】5.C++基本语法——《跟老吕学C++编程语言》

【C基础】5.C基本语法——《跟老吕学C编程语言》 C基本语法C程序结构编译&执行C程序C中的分号&块C标识符C关键字三字符组C中的空格 C基本语法 C程序可以定义为对象的集合&#xff0c;这些对象通过调用彼此的方法进行交互。 对象 - 对象具有状态和行为。例如&#xff1…

如何在Windows搭建WebDav服务,并外网可访问

目录 1. 安装IIS必要WebDav组件 2. 客户端测试 3. 使用cpolar内网穿透&#xff0c;将WebDav服务暴露在公网 3.1 打开Web-UI管理界面 3.2 创建隧道 3.3 查看在线隧道列表 4. 公网远程访问 4.1 浏览器访问测试 4.2 映射本地盘符访问 4.3 安装Raidrive客户端 总结&…

【Vue3】路由的query参数和params参数

&#x1f497;&#x1f497;&#x1f497;欢迎来到我的博客&#xff0c;你将找到有关如何使用技术解决问题的文章&#xff0c;也会找到某个技术的学习路线。无论你是何种职业&#xff0c;我都希望我的博客对你有所帮助。最后不要忘记订阅我的博客以获取最新文章&#xff0c;也欢…

爬虫入门到精通_框架篇18(Scrapy中选择器用法)_sector,xpath,css,re

官方文档 Using selectors To explain how to use the selectors we’ll use the Scrapy shell (which provides interactive testing) and an example page located in the Scrapy documentation server: https://docs.scrapy.org/en/latest/_static/selectors-sample1.html…

光学型轮廓仪专业检测光学镜片曲面

在现代光学工业中&#xff0c;精密光学元件的制作是一项重要任务。而粗糙度是影响光学曲面质量的重要因素之一。为确保光学元件的卓越性能&#xff0c;轮廓仪成为不可或缺的检测工具。它以其超高精度、全自动化、多功能性和数据分析的特点&#xff0c;实现非球面镜片的高精度专…