------
## 最终结论
```python
from collections import defaultdict
import heapq

def build_graph(n, edges, succProb):
    graph = defaultdict(list)
    for i in range(len(edges)):
        a, b = edges[i]
        prob = succProb[i]
        graph[a].append((b, prob))
        graph[b].append((a, prob))
    return graph

def initialize_heap(start):
    # Using a max heap, we store negative probabilities to simulate max behavior
    max_heap = []
    # Start with the start node and probability 1
    heapq.heappush(max_heap, (-1.0, start))  # (negative probability, node)
    return max_heap

def max_probability_path(n, edges, succProb, start, end):
    graph = build_graph(n, edges, succProb)
    max_heap = initialize_heap(start)
    max_prob = [0] * n
    max_prob[start] = 1.0

    while max_heap:
        current_prob, node = heapq.heappop(max_heap)
        current_prob = -current_prob  # Convert back to positive probability

        if node == end:
            return current_prob
        
        for neighbor, prob in graph[node]:
            new_prob = current_prob * prob
            if new_prob > max_prob[neighbor]:
                max_prob[neighbor] = new_prob
                heapq.heappush(max_heap, (-new_prob, neighbor))

    return 0.0
```