본문 바로가기
🔅코딩테스트 공부🔅/❗백준

[백준] 1197번 최소 스패닝 트리(python)

by 윤무무 2023. 3. 2.

https://www.acmicpc.net/problem/1197

 

1197번: 최소 스패닝 트리

첫째 줄에 정점의 개수 V(1 ≤ V ≤ 10,000)와 간선의 개수 E(1 ≤ E ≤ 100,000)가 주어진다. 다음 E개의 줄에는 각 간선에 대한 정보를 나타내는 세 정수 A, B, C가 주어진다. 이는 A번 정점과 B번 정점이

www.acmicpc.net

 

1. 난이도 골드4 (🥇)
import sys
input = sys.stdin.readline

v,e = map(int, input().rstrip().split()) #v정점 e간선

parent = [i for i in range(v+1)]
edges = []
result = 0

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

for i in range(e):
  a,b,cost = map(int, input().rstrip().split())
  edges.append((cost,a,b))

edges.sort()

for edge in edges:
  cost,a,b = edge

  if find(a) != find(b):
    union(a,b)
    result += cost

print(result)

 

최소 스패닝 트리의 개념을 익히고 바로 풀어봤다.

 

간선을 오름차순 정렬하고 문제를 푸는 걸 깜박해서 틀렸었음 ㅜㅜ

 

 

댓글