当前位置:网站首页>Leetcode daily question (1514. path with maximum probability)
Leetcode daily question (1514. path with maximum probability)
2022-07-23 19:15:00 【wangjun861205】
You are given an undirected weighted graph of n nodes (0-indexed), represented by an edge list where edges[i] = [a, b] is an undirected edge connecting the nodes a and b with a probability of success of traversing that edge succProb[i].
Given two nodes start and end, find the path with the maximum probability of success to go from start to end and return its success probability.
If there is no path from start to end, return 0. Your answer will be accepted if it differs from the correct answer by at most 1e-5.
Example 1:

Input: n = 3, edges = [[0,1],[1,2],[0,2]], succProb = [0.5,0.5,0.2], start = 0, end = 2
Output: 0.25000
Explanation: There are two paths from start to end, one having a probability of success = 0.2 and the other has 0.5 * 0.5 = 0.25.
Example 2:

Input: n = 3, edges = [[0,1],[1,2],[0,2]], succProb = [0.5,0.5,0.3], start = 0, end = 2
Output: 0.30000
Example 3:

Input: n = 3, edges = [[0,1]], succProb = [0.5], start = 0, end = 2
Output: 0.00000
Explanation: There is no path between 0 and 2.
Constraints:
- 2 <= n <= 10^4
- 0 <= start, end < n
- start != end
- 0 <= a, b < n
- a != b
- 0 <= succProb.length == edges.length <= 2*10^4
- 0 <= succProb[i] <= 1
- There is at most one edge between every two nodes.
The method is the same as that of calculating the shortest path , It's just that the shortest path is replaced by the maximum probability , Breadth first updates the maximum probability of each node , Until there is no node to update
use std::collections::HashMap;
impl Solution {
pub fn max_probability(
n: i32,
edges: Vec<Vec<i32>>,
succ_prob: Vec<f64>,
start: i32,
end: i32,
) -> f64 {
let mut probs = vec![0f64; n as usize];
let edges: HashMap<i32, Vec<(i32, f64)>> =
edges
.into_iter()
.zip(succ_prob)
.fold(HashMap::new(), |mut m, (l, p)| {
m.entry(l[0]).or_insert(Vec::new()).push((l[1], p));
m.entry(l[1]).or_insert(Vec::new()).push((l[0], p));
m
});
probs[start as usize] = 1f64;
loop {
let mut modified = false;
for i in 0..n {
if probs[i as usize] > 0f64 {
let cp = probs[i as usize];
if let Some(nexts) = edges.get(&i) {
for &(n, p) in nexts {
let np = cp * p;
if np > probs[n as usize] {
probs[n as usize] = np;
modified = true;
}
}
}
}
}
if !modified {
break;
}
}
probs[end as usize]
}
}
边栏推荐
- MQ [messagequeue graphic explanation and four MQ comparisons]
- FPGA实现IIC协议(一)IIC总线协议
- TCL scripting language foundation (2)
- [paper reading] gettext: trajectory flow map enhanced transformer for next POI recommendation
- Synopsys TCL of Tcl language (3) (Digital IC)
- Google正在改进所有产品中的肤色表现 践行“图像公平”理念
- Source code analysis of ThreadPoolExecutor
- 11.神经网络基本概念
- Mee | Zhejiang University Chenglei group develops a new method for designing and constructing synthetic flora
- Detailed explanation of TCL scripting language (1)
猜你喜欢

FPGA基于spi的flash读写

The first layer of OSI model: physical layer, the cornerstone of existence!

Todo fix bug tag feature and other configurations

elk笔记25--快速体验APM

还在用Xshell?你out了,推荐一个更现代的终端连接工具

数据链路层 -------- 以太网 和 ARP

基於FPGA的UART接口設計

UPC 2022 summer personal training game 12 (number of combinations b)
![JUC concurrent programming [detailed explanation and demonstration]](/img/08/a680e4686a34f7b177c2650f330dfb.png)
JUC concurrent programming [detailed explanation and demonstration]

Implementation of SPI communication protocol based on FPGA
随机推荐
Multithreading and high concurrency Day11
迷宫类dp整合
Handwriting bind, call, apply is actually very simple
【C语言】程序环境和预处理
C language small project - address book (static version + dynamic version + file version)
[2018] [paper notes] graphene FET and [2] - Preparation and transfer of graphene
DP问题大合集
Mee | Zhejiang University Chenglei group develops a new method for designing and constructing synthetic flora
Access intranet rds+mysql through SSH
还在用Xshell?你out了,推荐一个更现代的终端连接工具
.net core implements background tasks (scheduled tasks) longbow Tasks component (III)
【机器学习】吴恩达:终生学习
moxa串口服务器型号,moxa串口服务器产品配置说明
MySQL [knowing and mastering one article is enough]
Application of jishili electrometer in testing scheme of new energy battery
作为一名后台开发人员,你必须知道的两种过滤器
Moxa serial server model, moxa serial server product configuration instructions
ZigBee集成开发环境IAR安装
Log framework [detailed learning]
ThreadPoolExecutor源码分析