当前位置:网站首页>LeetCode每日一题(1514. Path with Maximum Probability)
LeetCode每日一题(1514. Path with Maximum Probability)
2022-07-23 17:16: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.
与计算最短路径的方法相同, 只不过把最短路径换成了最大概率, 广度优先更新每个节点的最大概率, 直到最后没有节点可更新为止
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 original path is not original [if there is infringement, please contact the original blogger to delete]
- Lendingclub loan status business details current, charge off, issued, full paid, grace period
- Mbio | the sun Chaomin formation of Ocean Institute has verified in situ the new pathway of microbial mediated elemental sulfur formation in the deep sea
- Shell
- .NET Core 实现后台任务(定时任务)Longbow.Tasks 组件(三)
- [shutter -- layout] flexible layout (flex and expanded)
- Conception de l'interface UART basée sur la FPGA
- Paddlenlp's UIE classification model [taking emotional propensity analysis news classification as an example] including intelligent annotation scheme)
- It's too strong. An annotation handles the data desensitization returned by the interface
猜你喜欢

11. Basic concepts of neural network

Mbio | the sun Chaomin formation of Ocean Institute has verified in situ the new pathway of microbial mediated elemental sulfur formation in the deep sea
![[2020] [paper notes] Based on Rydberg atom——](/img/5c/186cae4e47a236ae4062d15f839196.png)
[2020] [paper notes] Based on Rydberg atom——

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

elk笔记25--快速体验APM

Opencv (13): brief introduction to cv2.findcontours, cv:: findcontours and description of cv2.findcontours function in various versions of opencv

【机器学习】吴恩达:终生学习

How can zero foundation self-study software testing? Ten year test Laoniao's strongest software test learning Roadmap

11.神经网络基本概念
![MySQL [knowing and mastering one article is enough]](/img/5a/ed8f1d3fac63d329a28ebf6d4974f5.png)
MySQL [knowing and mastering one article is enough]
随机推荐
quota的使用方法
图学习总结
识别引擎ocropy-&gt;ocropy2-&gt;OCRopus3总结
LeetCode 0131. 分割回文串
What is the use of tampermonkey?
Log framework [detailed learning]
11. Basic concepts of neural network
It's too strong. An annotation handles the data desensitization returned by the interface
What is stack and the difference between stacks
1259. Programmation dynamique de poignée de main disjointe
Paddlenlp's UIE classification model [taking emotional propensity analysis news classification as an example] including intelligent annotation scheme)
[shutter -- layout] linear layout (row and column)
ThreadPoolExecutor源码分析
Error reporting caused by the use of responsebodyadvice interface and its solution
ROS (27): the simple use of rosparam and the unsuccessful transfer of parameters through launch and its solution
Tcl 语言之Synopsys Tcl篇(3)(数字IC)
EmguCV 常用函数功能说明「建议收藏」
电子元件-电阻
Gradle [graphic installation and use demonstration]
What is the difference between preamplifier and power amplifier?