# Prim's MST
```python
import heapq
from collections import defaultdict
class Solution:
def minimumCost(self, N: int, connections: List[List[int]]) -> int:
graph = defaultdict(list)
for u,v,w in connections:
graph[u].append([w,v])
graph[v].append([w,u])
visited = {k:False for k in graph.keys()}
s = connections[0][0]
q = [[0, s]]
cost = 0
while q:
w1,u = heapq.heappop(q)
if not visited[u]:
cost += w1
visited[u] = True
for w2,v in graph[u]:
if not visited[v]:
heapq.heappush(q,(w2,v))
if sum(visited.values()) == N:
return cost
else:
return -1
```