여름의 서재

[SWEA] 5249_최소 신장 트리 본문

알고리즘/SWEA

[SWEA] 5249_최소 신장 트리

엉아_ 2021. 10. 14. 15:39
728x90

📕 문제

https://swexpertacademy.com/main/learn/course/lectureProblemViewer.do

 

SW Expert Academy

SW 프로그래밍 역량 강화에 도움이 되는 다양한 학습 컨텐츠를 확인하세요!

swexpertacademy.com

 

💡 풀이법

 

def find_MST(s):
    key[0] = 0

    for _ in range(V):
        min_idx = -1
        min_val = float('inf')
        for i in range(V+1):
            if not visited[i] and key[i] < min_val:
                min_idx = i
                min_val = key[i]

        visited[min_idx] = 1

        for i in range(V+1):
            if adj_mat[min_idx][i] and not visited[i]:
                weight = adj_mat[min_idx][i]
                if weight < key[i]:
                    key[i] = weight

T = int(input())
for tc in range(1, T+1):
    V, E = map(int, input().split())
    edges = [list(map(int, input().split())) for _ in range(E)]

    adj_mat = [[0 for _ in range(V+1)] for _ in range(V+1)]
    for n1, n2, w in edges:
        adj_mat[n1][n2] = w
        adj_mat[n2][n1] = w


    key = [float('inf')] * (V+1)
    visited = [0] * (V+1)

    s = 0
    find_MST(s)

    print('#{} {}'.format(tc, sum(key)))

'알고리즘 > SWEA' 카테고리의 다른 글

[SWEA] 5251_최소 이동 거리 (다익스트라 이용)  (0) 2021.10.14
[SWEA] 5250_최소 비용  (0) 2021.10.14
[SWEA] 5248_그룹 나누기  (0) 2021.10.14
[SWEA] 5247_연산  (0) 2021.10.14
[SWEA] 2814_최장 경로  (0) 2021.10.14
Comments