# Coding/# 백준
[백준 / 1922] 네트워크 연결 - Python
강현들
2022. 2. 16. 16:33
728x90
반응형
https://www.acmicpc.net/problem/1922
1922번: 네트워크 연결
이 경우에 1-3, 2-3, 3-4, 4-5, 4-6을 연결하면 주어진 output이 나오게 된다.
www.acmicpc.net
<풀이>
입력 받은 연결들을 작은 비용 순으로 정렬하고, 추가해가면 된다.
a와 b가 같은 입력이 있으므로 해당 경우는 무시한다.
<전체 코드>
import sys
N = int(sys.stdin.readline())
M = int(sys.stdin.readline())
connections = []
for _ in range(M):
a, b, c = map(int, sys.stdin.readline().split())
if a == b:
continue
connections.append([c, a, b])
connections.sort()
visit = []
cost = 0
for connection in connections:
c, a, b = connection
a_idx = -1
b_idx = -1
for i in range(len(visit)):
if a in visit[i]:
a_idx = i
if b in visit[i]:
b_idx = i
if a_idx == -1 and b_idx == -1:
visit.append([a, b])
cost += c
elif a_idx == -1:
visit[b_idx].append(a)
cost += c
elif b_idx == -1:
visit[a_idx].append(b)
cost += c
elif a_idx == b_idx:
continue
else:
visit[a_idx].extend(visit[b_idx])
visit.pop(b_idx)
cost += c
visit[0].sort()
if len(set(visit[0])) == N:
print(cost)
break
728x90
반응형