본문 바로가기
  • KEEP HUSTLE!
파이썬 코테 준비

[백준 1197] 최소 스패닝 트리 - Python(파이썬)

by 하수군 2021. 3. 21.
import sys


def find(x):
    if home[x] < 0:
        return x

    home[x] = find(home[x])
    return home[x]


V, E = map(int, sys.stdin.readline().split())
home = [-1] * (V + 1)
arr = []
answer, cnt = 0, 0

for _ in range(E):
    a, b, c = map(int, sys.stdin.readline().split())
    arr.append([c, a, b])

# 가중치로 오름차순 정렬
arr.sort(key=lambda x: x[0])

for i in range(E):
    weight, a, b = arr[i]
    # 연결이 되었는 지 확인
    f_a, f_b = find(a), find(b)
    # 연결X 라면 가중치 저장하고, 둘이 연결시키기
    if f_a != f_b:
        home[f_b] = f_a
        answer += weight
        cnt += 1
		# V개의 정점의 그래프의 최소 간선 수는 V-1
        if cnt == V-1:
            break

print(answer)

 

댓글