https://www.acmicpc.net/problem/1922
import sys
input = sys.stdin.readline
def find_parent(parent, x):
if parent[x] != x:
parent[x] = find_parent(parent, parent[x])
return parent[x]
def union_parent(parent, x, y):
a = find_parent(parent, x)
b = find_parent(parent, y)
if a < b:
parent[b] = a
else:
parent[a] = b
n = int(input())
m = int(input())
graph = []
for i in range(m):
a, b, c = map(int, input().split())
graph.append([c, a, b])
parent = []
for i in range(n + 1):
parent.append(i)
graph.sort()
result = 0
for i in graph:
if find_parent(parent, i[1]) != find_parent(parent, i[2]):
union_parent(parent, i[1], i[2])
result += i[0]
print(result)
최소 신장 트리 예제와 똑같은 문제. 최소 신장 트리 알고리즘을 이용해서 해결했다