1N, M, R = map(int, input().split()) 2 3item = list(map(int, input().split())) 4G = [[] for _ in range(N)] 5for _ in range(R): 6 a, b, c = map(int, input().split()) 7 G[a-1].append((b-1, c)) 8 G[b-1].append((a-1, c)) 9 10def dfs(node, dist): 11 global result 12 if dist > M: 13 return 14 if not visit[node]: 15 result += item[node] 16 visit[node] = True 17 18 for n_node, n_dist in G[node]: 19 dfs(n_node, dist+n_dist) 20 21max_result = 0 22 23for i in range(N): 24 result = 0 25 visit = [False]*N 26 dfs(i, 0) 27 max_result = max(max_result, result) 28 29print (max_result) ๋ถ„๋ฅ˜์— ๋‹ค์ต์ŠคํŠธ๋ผ, ํ”Œ๋กœ์ด๋“œ-์›Œ์…œ๋กœ ๋˜์–ด์žˆ์ง€๋งŒ DFS๋กœ ํ’€์—ˆ๋‹ค ํ’€์ด ๋ฐฉ๋ฒ• ์—ฌ๊ธฐ์„œ๋Š” ์žฌ๋ฐฉ๋ฌธ ํ–ˆ๋‹ค๊ณ  ํ•ด์„œ ํƒ์ƒ‰์„ ํ•˜์ง€ ์•Š์œผ๋ฉด ์•ˆ๋œ๋‹ค ์žฌ๋ฐฉ๋ฌธํ–ˆ์„๋•Œ ์ „์— ๋ฐฉ๋ฌธํ–ˆ์„ ๋•Œ๋ณด๋‹ค ๋” ์งง์€ ํ†ต๋กœ๋กœ ๋“ค์–ด์™”๋‹ค๋ฉด ๋” ๋งŽ์€ ์•„์ดํ…œ์„ ์–ป์„ ์ˆ˜ ์žˆ๊ธฐ ๋•Œ๋ฌธ์ด๋‹ค ๋‹ค๋งŒ, ์•„์ดํ…œ์€ ๋ฐฉ๋ฌธํ•  ๋•Œ๋งˆ๋‹ค ์–ป์„ ์ˆ˜ ์žˆ๋Š” ๊ฒƒ์ด ์•„๋‹ˆ๊ธฐ ๋•Œ๋ฌธ์— ์ฃผ์˜ํ•˜์—ฌ์•ผ ํ•œ๋‹ค ์œ„์˜ ๋‚ด์šฉ์„ ์งˆ๋ฌธ๊ฒŒ์‹œํŒ์„ ๋ณด๋‹ค๊ฐ€ ๊นจ๋‹ซ๊ณ  ํ’€ ์ˆ˜ ์žˆ์—ˆ๋‹ค