当前位置:网站首页>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]
}
}
边栏推荐
- MySql【从了解到掌握 一篇就够】
- MEE | 浙大程磊组开发设计与构建合成菌群新方法
- 80 + guests took the stage, users from more than 10 countries attended the meeting, and 70000 + viewers watched the end of "Gwei 2022 Singapore"
- 数据链路层 -------- 以太网 和 ARP
- CTF misc learning summary "suggestions collection"
- 去中心化存储面临的挑战
- An SQL question about grouping query
- Handwriting bind, call, apply is actually very simple
- Emgucv common function function description "suggestions collection"
- ? The problem of front desk parameter transmission needs to be confirmed
猜你喜欢
![[2013] [paper notes] terahertz band nano particle surface enhanced Raman——](/img/09/af80a744573ce53a0056e7124675a8.png)
[2013] [paper notes] terahertz band nano particle surface enhanced Raman——
![[the whole process of Game Modeling and model production] create the game soldier character with ZBrush](/img/35/3be94833b6ff1cd251561fb6d92b1e.png)
[the whole process of Game Modeling and model production] create the game soldier character with ZBrush

Application of jishili electrometer in testing scheme of new energy battery

Multithreading & high concurrency (the latest in the whole network: interview questions + map + Notes) the interviewer is calm
![[2018] [paper notes] graphene FET and [2] - Preparation and transfer of graphene](/img/32/c6e4af95baf322adf06bd8ee741b67.png)
[2018] [paper notes] graphene FET and [2] - Preparation and transfer of graphene
![[2020] [paper notes] Based on Rydberg atom——](/img/5c/186cae4e47a236ae4062d15f839196.png)
[2020] [paper notes] Based on Rydberg atom——

FPGA flash reading and writing based on SPI

How to understand: common code block, construction block, static block? What does it matter?

11.神经网络基本概念

Know two things: how does redis realize inventory deduction and prevent oversold?
随机推荐
Implementation of SPI communication protocol based on FPGA
11. Basic concepts of neural network
Source code analysis of ThreadPoolExecutor
LeetCode 剑指 Offer II 115.重建序列:图解 - 拓扑排序
界面设计四大原则
TODO FIXME BUG TAG FEATURE 等配置
Rapid establishment of devstack cloud computing platform
Notes of benthos
Handwriting bind, call, apply is actually very simple
Opencv (13): brief introduction to cv2.findcontours, cv:: findcontours and description of cv2.findcontours function in various versions of opencv
【C语言】程序环境和预处理
Completion report of communication software development and Application
SQL statement exercise
Redis【2022最新面试题】
1259. Programmation dynamique de poignée de main disjointe
80 + guests took the stage, users from more than 10 countries attended the meeting, and 70000 + viewers watched the end of "Gwei 2022 Singapore"
Design of UART interface based on FPGA
一定要执行多个请求,都要捕获错误,使用try catch 不够优雅
What content does the software test plan include and how to write it. Share test plan template
[the whole process of Game Modeling and model production] create the game soldier character with ZBrush