백준 문제풀이

14938 - 서강그라운드 / gold 4 / 최단 경로

RonLee 2022. 11. 24. 10:43
'''
14938 - 서강그라운드 / gold 4 / 최단 경로
'''
import sys
import heapq

input = sys.stdin.readline
INF = int(1e9)

# n:지역 개수, m:수색 범위, r:길의 개수
n, m, r = map(int, input().split())

item_box = list(map(int, input().split()))
item_box.insert(0, 0)

graph = [[] for i in range(n + 1)]
for _ in range(r):
    a, b, c = map(int, input().split())
    graph[a].append((b, c))
    graph[b].append((a, c))


# 거리 / 아이템 수 / 해당 노드
def dijkstra(start):
    q = []
    visited = [INF] * (n + 1)
    visited[start] = 0
    heapq.heappush(q, (0, start))

    while q:
        now_dist, now_node = heapq.heappop(q)
        for next_node, next_dist in graph[now_node]:
            if now_dist + next_dist < visited[next_node]:
                next_dist += now_dist
                visited[next_node] = next_dist
                heapq.heappush(q, (next_dist, next_node))

    res = 0
    for i in range(1, n + 1):
        if visited[i] <= m:
            res += item_box[i]
    return res


max_result = 0
for i in range(1, n + 1):
    result = dijkstra(i)
    if max_result < result:
        max_result = result

print(max_result)