### maxProbability 
from heapq import heapify, heappush, heappop
from collections import defaultdict
from typing import *
def f_gold(n: int,
    edges: List[List[int]],
    succProb: List[float],
    start: int,
    end: int,
) -> float:
    g = defaultdict(list)
    for (a, b), s in zip(edges, succProb):
        g[a].append((b, s))
        g[b].append((a, s))
    q = [(-1, start)]
    d = [0] * n
    d[start] = 1
    while q:
        w, u = heappop(q)
        w = -w
        if d[u] > w:
            continue
        for v, t in g[u]:
            if d[v] < d[u] * t:
                d[v] = d[u] * t
                heappush(q, (-d[v], v))
    return d[end]