๋ฌธ์
https://www.acmicpc.net/problem/14938
๋ฐฑ์ค ๋ฌธ์ ์ง - 0x1C๊ฐ - ํ๋ก์ด๋ ์๊ณ ๋ฆฌ์ฆ
์๊ณ ๋ฆฌ์ฆ: ์ต๋จ ๊ฒฝ๋ก, ๋ฐ์ดํฌ์คํธ๋ผ, ํ๋ก์ด๋-์์
ํ์ด

์กฐ๊ฑด์ ํ ์ง์ญ์ผ๋ก ์ด๋ ํ, ํด๋น ๋
ธ๋๋ก๋ถํฐ ํน์ ๊ฑฐ๋ฆฌ ๋ด์ ์์นํ ์์ดํ
๋ค๋ง ์ฃผ์ธ ์ ์๋ค๋๊ฒ.
๋ฐ๋ผ์ 1) ํ๋ก์ด๋์์
์ํ, 2) ๋
ธ๋๋ฅผ ํ๋ ์ ํ ํ, ํด๋น ๋
ธ๋๋ก๋ถํฐ ๋ค๋ฅธ ๋
ธ๋๊น์ง์ ๊ฑฐ๋ฆฌ ์ฒดํฌ ์์๋ก ์งํํ๋ค.
์ฐธ๊ณ ๋ก ์๊ธฐ ์ง์ญ๋ ํฌํจ์ด๋ฏ๋ก, ์ด๋ํ ์ง์ญ(๋ ธ๋)์ ์์ดํ ๋ ๊ฒฐ๊ณผ๊ฐ์ ๋ํด์ค์ผํ๋ค.
์ ์ฒด ์ฝ๋
# ๋ฉ๋ชจ๋ฆฌ: 33432KB / ์๊ฐ: 328ms
from sys import stdin
input = stdin.readline
INF = float("inf")
n, m, r = map(int, input().split())
graph = [[INF] * n for _ in range(n)]
item = list(map(int, input().split()))
for i in range(n):
graph[i][i] = 0
for _ in range(r):
a, b, l = map(int, input().split())
graph[a-1][b-1] = l
graph[b-1][a-1] = l
# ํ๋ก์ด๋-์์
์ํ
# ํ ๋
ธ๋์์ ๋ค๋ฅธ ๋ชจ๋ ๋
ธ๋๊น์ง์ ์ต๋จ๊ฑฐ๋ฆฌ ๊ตฌํ๊ธฐ
for k in range(n):
for i in range(n):
for j in range(n):
graph[i][j] = min(graph[i][k] + graph[k][j], graph[i][j])
max_get = 0
for target in range(n):
get = 0
for node in range(n):
# ์ต๋จ๊ฑฐ๋ฆฌ๊ฐ m ์ดํ์ธ ๊ตฌ์ญ์ ์์ดํ
๋ง ์ฃผ์ธ ์ ์์
if graph[target][node] <= m:
get += item[node]
max_get = max(get, max_get)
print(max_get)