프로그래밍
[백준 1922 네트워크 연결] - 파이썬 풀이 🦄
Rudi
2021. 2. 17. 23:56
백준 1922 네트워크 연결 - 파이썬 풀이 🦄
문제
Minimal Spanning Tree를 구하는 문제이다.
Keypoints
- minimal한 edge부터 선택하면서
- cycle을 만드는 경우를 제외하면 된다.
- 두 꼭지점의 집합이 서로 같다면 합쳤을 때 Cycle을 만든다.
Solution
import sys
n = int(input())
e = int(input())
graph = [list(map(int, sys.stdin.readline().strip().split())) for i in range(e)]
graph.sort(key=lambda x:x[2])
sets = [i for i in range(n+1)]
distance = 0
index = 0
while sum(sets) != n :
a,b,d = graph[index]
setA, setB = sets[a], sets[b]
if setA !=setB:
distance += d
setC = min(setA, setB)
for i in range(1, n+1):
if sets[i] in [setA, setB]:
sets[i] = setC
index +=1
print(distance)