Q43. 어두운 길
문제참고
[이코테] 그래프 알고리즘 - 어두운 길 (tistory.com)
[이코테] 그래프 알고리즘 - 어두운 길
해당 포스팅의 문제의 출처는 나동빈님의 이것이 취업을 위한 코딩 테스트 교재를 공부하면서 풀이할 때 본인의 사고 과정 흐름과 문제 풀이를 기록하기 위함 입니다. 문제설명 한 마을은 N개
techblog-history-younghunjo1.tistory.com
이건 문제 읽어보니까 그냥 최소신장트리 냄새가 술술나는데?
minimum spanning tree 써주세요~!!! 하고 소리치는거같다 ㅋㅋㅋㅋㅋ
마침 union find 구현해보고 하루이틀이 흘렀으니 복습할때가 됐는데 잘됐다 굳굳
######### input ##########
N, M = map(int, input().split())
edges = []
for _ in range(M):
X, Y, Z = map(int, input().split())
edges.append((Z,X,Y))
edges.sort()
###########################
##### union-find #####
parent = [i for i in range(N)]
def find(parent, x):
if parent[x] != x:
parent[x] = find(parent, parent[x])
return parent[x]
def union(parent, x, y):
p1 = find(parent, x)
p2 = find(parent, y)
parent[max(p1,p2)] = min(p1,p2)
######################
####### main #########
minimum = 0
total = 0
for cost, v1, v2 in edges:
total += cost
if find(parent, v1) != find(parent, v2):
minimum += cost
union(parent, v1, v2)
print(total - minimum)
######################