import heapq

def prim_mst(n, edges):
    if n == 0:
        return 0
    adj = [[] for _ in range(n)]
    for u, v, weight in edges:
        adj[u].append((v, weight))
        adj[v].append((u, weight))
    heap, seen, total = [(0, 0)], set(), 0
    while heap:
        weight, u = heapq.heappop(heap)
        if u in seen:
            continue
        seen.add(u)
        total += weight
        for v, cost in adj[u]:
            if v not in seen:
                heapq.heappush(heap, (cost, v))
    return total if len(seen) == n else None
