1584. Min Cost to Connect All Points
class Solution:
def minCostConnectPoints(self, points: List[List[int]]) -> int:
N = len(points)
adj = defaultdict(list)
for i in range(N):
x1, y1 = points[i]
for j in range(i + 1, N):
x2, y2 = points[j]
dist = abs(x1 - x2) + abs(y1 - y2)
adj[i].append([dist, j])
adj[j].append([dist, i])
res = 0
visited = set()
minH = [[0, 0]]
while len(visited) < N:
cost, i = heapq.heappop(minH)
if i in visited:
continue
res += cost
visited.add(i)
for neiCost, j in adj[i]:
if j not in visited:
heapq.heappush(minH, [neiCost, j])
return res