문제풀이/최단경로

[파이썬] [최단경로] 백준 14938 서강그라운드

승무_ 2022. 3. 16. 11:46

문제

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

 

14938번: 서강그라운드

예은이는 요즘 가장 인기가 있는 게임 서강그라운드를 즐기고 있다. 서강그라운드는 여러 지역중 하나의 지역에 낙하산을 타고 낙하하여, 그 지역에 떨어져 있는 아이템들을 이용해 서바이벌을

www.acmicpc.net

 

코드

import sys
input=sys.stdin.readline
INF=sys.maxsize

n,m,r=map(int, input().split())
item=list(map(int, input().split()))

graph=[[INF]*(n+1) for _ in range(n+1)]

for i in range(n+1):
    for j in range(n+1):
        if i==j:
            graph[i][i]=0

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

for k in range(1,n+1):
    for i in range(1,n+1):
        for j in range(1,n+1):
            graph[i][j]=min(graph[i][j],graph[i][k]+graph[k][j])

result=0
for i in range(1,n+1):
    temp=0
    for j in range(1,n+1):
        if graph[i][j]<=m:
            temp+=item[j-1]
    result=max(result,temp)

print(result)