반응형
1. 문제
https://www.acmicpc.net/problem/1647
2. 풀이
두 개로 분리한다는 것은 최소한으로 연결 한 후 가장 cost가 높은 노드를 하나 제거한다는 것이다.
3. 구현
import sys
import heapq
# sys.stdin = open("input.txt")
N,M = map(int, sys.stdin.readline().split())
edges=[]
parent=[i for i in range(N+2)]
def find(x, parent):
if parent[x]==x:
return x
parent[x]=find(parent[x], parent)
return parent[x]
def uni(x,y,parent):
x = find(x, parent)
y = find(y, parent)
if x==y:
return
parent[y]=x
return
while M:
A, B, C = map(int, sys.stdin.readline().split())
heapq.heappush(edges, (C,A,B))
M-=1
cnt=0
answer=0
last_edge=0
while edges:
w,s,e = heapq.heappop(edges)
if find(s,parent)!=find(e, parent):
uni(s,e, parent)
last_edge = w
answer+=w
cnt+=1
if cnt==N-1:
break
print(answer-last_edge)
반응형
'PS > 백준' 카테고리의 다른 글
[미완] 백준 9373 복도뚫기: 크루스칼 (python, 파이썬) (0) | 2021.07.05 |
---|---|
[백준 2887] 행성 터널: 크루스칼 (python, 파이썬) (0) | 2021.07.04 |
[백준 4386] 별자리 만들기: 크루스칼 파이썬, python (0) | 2021.07.03 |
백준 6497번 : 전력난, 50% 에서 런타임 에러나는 경우 (python, 파이썬) (0) | 2021.07.03 |
백준: 네트워크 python 파이썬 (0) | 2021.07.03 |
댓글