코드
# 크루스칼 알고리즘 이용
import sys
input = sys.stdin.readline
def find(a,lst):
if a != lst[a]:
lst[a] = find(lst[a], lst)
return lst[a]
def union(a,b,lst):
a = find(a,lst)
b = find(b,lst)
if a < b:
lst[b] = a
else:
lst[a] = b
n, m = map(int, input().split())
parent = [i for i in range(n+1)]
edge = []
for _ in range(m):
a,b,c = map(int, input().split())
edge.append((c,a,b))
edge.sort(key=lambda x: x[0])
last = 0
res = 0
for i in range(m):
cost, v1, v2 = edge[i]
if find(v1, parent) != find(v2,parent):
union(v1, v2, parent)
res += cost
last = max(last, cost)
print(res-last)
'백준' 카테고리의 다른 글
[백준] 2292번 벌집 파이썬 코드 (0) | 2024.01.25 |
---|---|
[백준] 10431번 줄세우기 파이썬 코드 (0) | 2024.01.24 |
[백준] 14621번 나만 안되는 연애 파이썬 코드 (0) | 2024.01.22 |
[백준] 1197번 최소 스패닝 트리 (0) | 2024.01.22 |
[백준] 9372번 상근이의 여행 파이썬 코드 (0) | 2024.01.22 |