문제
https://www.acmicpc.net/problem/1922
1922번: 네트워크 연결
이 경우에 1-3, 2-3, 3-4, 4-5, 4-6을 연결하면 주어진 output이 나오게 된다.
www.acmicpc.net
코드
import sys
input=sys.stdin.readline
def find(x):
if parent[x]!=x:
parent[x]=find(parent[x])
return parent[x]
def union(a,b):
a=find(a)
b=find(b)
if a<b:
parent[b]=a
else:
parent[a]=b
n=int(input())
m=int(input())
parent=[0]*(n+1)
for i in range(n+1):
parent[i]=i
array=[]
for _ in range(m):
a,b,cost=map(int, input().split())
array.append((cost,a,b))
array.sort()
result=0
for i in array:
cost,a,b=i
if find(a)!=find(b):
union(a,b)
result+=cost
print(result)
'문제풀이 > 그래프' 카테고리의 다른 글
[파이썬] [그래프] Pro 방의 개수 (0) | 2022.02.20 |
---|---|
[파이썬] [그래프] Pro 순위 (0) | 2022.02.20 |
[파이썬] [그래프] 백준 2252 줄 세우기 (0) | 2022.02.08 |
[파이썬] [그래프] 백준 1717 집합의 표현 (0) | 2022.02.07 |
[파이썬] [그래프] union-find, kruskal, topology sort (0) | 2022.02.07 |