当前位置:网站首页>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]
}
}
边栏推荐
- The first layer of OSI model: physical layer, the cornerstone of existence!
- Weights & Biases (一)
- Challenges of decentralized storage
- Tcl 语言之Synopsys Tcl篇(3)(数字IC)
- FPGA基于spi的flash读写
- 二叉树高度 [log2n]+1与log2(n+1)是否相等
- DP problem collection
- How to understand: common code block, construction block, static block? What does it matter?
- Source code analysis of ThreadPoolExecutor
- 1259. Programmation dynamique de poignée de main disjointe
猜你喜欢

FPGA flash reading and writing based on SPI
【论文阅读】GETNext: Trajectory Flow Map Enhanced Transformer for Next POI Recommendation

MEE | 浙大程磊组开发设计与构建合成菌群新方法

Testing scheme of granite dielectric constant by network

Building virtual private network based on softther
![Paddlenlp's UIE classification model [taking emotional propensity analysis news classification as an example] including intelligent annotation scheme)](/img/00/e97dcac9f07e5d4512614536a17cd4.png)
Paddlenlp's UIE classification model [taking emotional propensity analysis news classification as an example] including intelligent annotation scheme)

Multithreading and high concurrency Day11

TODO FIXME BUG TAG FEATURE 等配置
![[2022] [paper notes] terahertz quantum well——](/img/05/27e9b6a5b2aebf8aa4604f5992551e.png)
[2022] [paper notes] terahertz quantum well——

The first layer of OSI model: physical layer, the cornerstone of existence!
随机推荐
Google正在改进所有产品中的肤色表现 践行“图像公平”理念
Leetcode sword finger offer II 115. reconstruction sequence: diagram topology sorting
Leetcode 0131. split palindrome string
11. Basic concepts of neural network
Synopsys TCL of Tcl language (3) (Digital IC)
What is the use of tampermonkey?
基于FPGA的UART接口设计
Digital security giant entrust revealed that it was attacked by blackmail software gangs in June
有向图之求两点之间所有路径
@JPA annotation in entity
.Net CLR R2R编译的原理简析
There is great competition pressure for software testing jobs, and the "migrant workers" who graduated from 985 also suffer
C语言小项目 -- 通讯录(静态版+动态版+文件版)
软件测试岗位就业竞争压力大,985毕业的“打工人“同样存在苦不堪言
Moxa serial server model, moxa serial server product configuration instructions
FPGA实现IIC协议(二)之IIC总线的FPGA实现(单次读写驱动)
C # split usage, split split split string
Terminal command (all)
识别引擎ocropy-&gt;ocropy2-&gt;OCRopus3总结
.net core implements background tasks (scheduled tasks) longbow Tasks component (III)