from itertools import product
def solution(N, road, K):
DP = [[500000] * N for _ in range(N)]
road.sort(key = lambda x : x[2], reverse = True)
for v1, v2, cost in road:
DP[v1 - 1][v2 - 1] = DP[v2 - 1][v1 - 1] = cost
for t in range(N):
DP[t][t] = 0
for via, i, j in product(range(N), repeat=3):
if DP[i][j] > (l := DP[i][via] + DP[via][j]):
DP[i][j] = l
return len([x for x in DP[0] if x <= K])
Floyd-Warshall Algorithm
``알고리즘 문제이다. 합승택시요금문제와 정확히 똑같은 문제이고 코드또한 거의 비슷하다. 다만,
3
- 5
길처럼 2개의 길이 있을 수 있기 때문에, road
를 비용기준 내림차순 정렬시킨뒤 Floyd-Warshall Algorithm
알고리즘을 사용하였다.