5249. 최소 신장 트리

2024. 2. 19. 17:42·Algorithm/SW Expert Academy Review

문제

그래프에서 사이클을 제거하고 모든 노드를 포함하는 트리를 구성할 때, 가중치의 합이 최소가 되도록 만든 경우를 최소신장트리라고 한다.

0번부터 V번까지의 노드와 E개의 간선을 가진 그래프 정보가 주어질 때, 이 그래프로부터 최소신장트리를 구성하는 간선의 가중치를 모두 더해 출력하는 프로그램을 만드시오.


[입력]

첫 줄에 테스트 케이스의 개수 T가 주어지고, 테스트 케이스 별로 첫 줄에 마지막 노드번호 V와 간선의 개수 E가 주어진다.

다음 줄부터 E개의 줄에 걸쳐 간선의 양 끝 노드 n1, n2, 가중치 w가 차례로 주어진다. 

1<=T<=50, 1<=V<=1000, 1<=w<=10, 1<=E<=1000000

[출력]

각 줄마다 "#T" (T는 테스트 케이스 번호)를 출력한 뒤, 답을 출력한다.

 

 

이해

  • 제목과 같이 최소 신장 트리(MST)를 이용하여 풀기

2024.01.10 - [Algorithm/개념] - 크루스칼(Kruskal) - 최소 신장 트리(MST)

 

크루스칼(Kruskal) - 최소 신장 트리(MST)

개념 신장 트리(Spanning Tree) 모든 정점을 포함하면서 사이클이 없는 그래프 특징 원 그래프의 모든 정점을 포함 간선(node) 수 = 정점 수 - 1 노드 간 사이클을 형성하지 않음 한 그래프 내에서 여러

l1m3kun.tistory.com

 

코드

def find_set(x):
    while x != rep[x]:
        x = rep[x]
    return x
 
def union(x, y):
    rep[find_set(y)] = find_set(x)
 
 
for test_case in range(1, int(input())+1):
    V, E = map(int, input().split())
    graph = []
    for _ in range(E):
        # n1, n2, w = map(int, input().split())
        graph.append(list(map(int, input().split())))
    # make_set
    rep = [i for i in range(V+1)]
    # 가중치 순으로 정렬
    graph.sort(key=lambda x:x[2])
    cnt = 0
    val = 0
    for n1, n2, w in graph:
        if find_set(n1) != find_set(n2):
            val += w
            cnt += 1
            union(n1, n2)
            if cnt == V:
                break
    print(f'#{test_case} {val}')
반응형

'Algorithm > SW Expert Academy Review' 카테고리의 다른 글

2607. 비슷한 단어  (0) 2024.01.20
13994. 새로운 버스 노선  (0) 2023.03.06
4613. 러시아 국기 같은 깃발  (0) 2023.03.06
1210. [S/W 문제해결 기본] 2일차 - Ladder1  (0) 2023.03.06
1954. 달팽이 숫자  (0) 2023.03.06
'Algorithm/SW Expert Academy Review' 카테고리의 다른 글
  • 2607. 비슷한 단어
  • 13994. 새로운 버스 노선
  • 4613. 러시아 국기 같은 깃발
  • 1210. [S/W 문제해결 기본] 2일차 - Ladder1
devSeongKu
devSeongKu
#FE_개발일지 #일상 #알고리즘
    • 분류 전체보기 (60)
      • Algorithm (41)
        • 개념 (8)
        • SW Expert Academy Review (22)
        • BaekJoon Review (11)
      • WEB (12)
        • HTML (5)
        • CSS (2)
        • JavaScript (1)
        • Django (4)
      • CS (3)
        • Git (2)
      • PROJECT (2)
        • 에러핸들링 (2)
      • 기타 (2)
  • 반응형
  • devSeongKu
    From The Present
    devSeongKu
  • 전체
    오늘
    어제
  • 링크

    • Github
  • 인기 글

  • 태그

    스프린트프론트엔드8기
    취업까지달린다
    코드잇스프린트
    Python
    html
    SWEA
    SW Expert Academy
    Baekjoon
    알고리즘
    Algorithm
  • 최근 글

  • hELLO· Designed By정상우.v4.10.4
devSeongKu
5249. 최소 신장 트리
상단으로

티스토리툴바