-
[백준] Python - 최소 스패닝 트리메모/알고리즘 2021. 10. 9. 17:52
최소 신장나무, 최소 스패닝 트리, MST 등등으로 불리는 트리 알고리즘이다.
처음에 어떻게 풀어야할까 막막해서 여러 풀이 방법과 집합 알고리즘을 참고했다.
더보기#https://github.com/CASPER-REPSAC/algorithm-stack/tree/gsniper777/baekjoon/1197 from sys import stdin v, e = list(map(int, stdin.readline().split())) #정점, 간선 의 개수 weight, treeSet = list(), [i for i in range(v+1)] sum = 0 for i in range(e): a, b, c = list(map(int, stdin.readline().split())) weight.append(tuple((a,b,c))) #def makeSet(x): treeSet[x] = x def find(x): if x != treeSet[x]: treeSet[x] = find(treeSet[x]) return treeSet[x] def union(x, y): q = find(x) u = find(y) if q > u: treeSet[u] = q else: treeSet[q] = u weight.sort(key=lambda x : x[2]) for a, b, c in weight: if find(a) != find(b): union(a, b) sum += c print(sum)
'메모 > 알고리즘' 카테고리의 다른 글
[백준] Python - 색종이와 가위 (0) 2021.11.02 [백준] Python - 트리 (1) 2021.10.10 [백준] Python - 트리 순회 (0) 2021.09.24 [백준] Python - 최대힙 (0) 2021.09.19 [백준] Go, Python - 후위 표기식 2 (0) 2021.09.17