import heapq
def prim(graph, start):
mst = []
visited = set()
min_heap = [(0, start, None)] # (权值, 当前节点, 前驱节点)
while min_heap:
weight, u, prev = heapq.heappop(min_heap)
if u not in visited:
visited.add(u)
if prev is not None:
mst.append((prev, u, weight))
for v, cost in graph.get(u, []):
if v not in visited:
heapq.heappush(min_heap, (cost, v, u))
return mst
graph = {
0: [(1, 1), (2, 3)],
1: [(0, 1), (2, 2), (3, 4)],
2: [(0, 3), (1, 2), (3, 5)],
3: [(1, 4), (2, 5)]
}
mst = prim(graph, 0)
print("最小生成树:", mst)