반응형
1. 문제
https://www.acmicpc.net/problem/1647
1647번: 도시 분할 계획
첫째 줄에 집의 개수N, 길의 개수M이 주어진다. N은 2이상 100,000이하인 정수이고, M은 1이상 1,000,000이하인 정수이다. 그 다음 줄부터 M줄에 걸쳐 길의 정보가 A B C 세 개의 정수로 주어지는데 A번 집
www.acmicpc.net
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 |
댓글