본문 바로가기

알고리즘 문제풀이

친구비 [백준 16562]

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

 

 

from collections import deque 
n, m, k = map(int ,input().split())
arr = [0] + list(map(int, input().split()))
gra = [[] for _ in range(n+1)] 

for _ in range(m):
    a, b = map(int, input().split())
    if a != b:
        gra[a].append(b)
        gra[b].append(a)
        
visit = [0 for _ in range(n+1)]

def bfs(start):
    q = deque()
    q.append(start)
    visit[start] = 1
    min_cost = arr[start]
    
    while q:
        now = q.popleft()
        for nxt in gra[now]:
            if not visit[nxt]:
                visit[nxt] = 1
                min_cost = min(min_cost, arr[nxt])
                q.append(nxt)
    
    return min_cost

total_cost = 0
for i in range(1, n+1):
    if not visit[i]:
        total_cost += bfs(i)

if total_cost <= k:
    print(total_cost)
else:
    print("Oh no")

'알고리즘 문제풀이' 카테고리의 다른 글

저울 [백준 10159]  (0) 2025.04.04
게임 [백준 1072]  (0) 2025.04.01
House Prices Going Up [백준 25778]  (0) 2025.03.30
풍선 맞추기 [백준 11509]  (0) 2025.03.13
연료 채우기 [백준 1826]  (0) 2025.03.11