0
点赞
收藏
分享

微信扫一扫

【LeetCode】1514.概率最大的路径


1. 题目

2.分析

  • 使用Floyd算法求解
  • 使用Dijkstra算法求解

3. 代码

'''
但是因为本题中n的数比较大,不适合用Folyd 算法
'''
class Solution:
def maxProbability(self, n: int, edges: List[List[int]], succProb: List[float], start: int, end: int) -> float:
dis=[[-1] * n for i in range(n)]
graph = [[-1] *n for i in range(n)]
for i in zip(edges,succProb):
nodes,prob = i
u,v = nodes
dis[u][v] = prob
dis[v][u] = prob
dis[u][u] = 1
dis[v][v] = 1
# print(dis)
# 直接使用floyd算法求解
for k in range(n):
for i in range(n):
for j in range(n):
if dis[i][k]!=-1 and dis[k][j]!=-1:
dis[i][j] = max(dis[i][k] * dis[k][j],dis[i][j])
if dis[start][end] == -1 :
return 0

return dis[start][end]
# print(dis)


举报

相关推荐

0 条评论