728x90
Floyd-Warshall 알고리즘으로 노드간 최단경로 구한다
1~k까지 최단거리 + k~x까지 최단거리 구한다
import sys
input = sys.stdin.readline
INF = int(1e9)
n, m = map(int, input().split())
graph=[[INF]*(n+1) for _ in range(n+1)]
for i in range(1,n+1):
for j in range(1,n+1):
if i==j:
graph[i][j]=0
for _ in range(m):
x,y = map(int,input().split())
graph[x][y]=1
graph[y][x]=1
x, k = map(int,input().split())
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])
if graph[1][k]==INF or graph[k][x]==INF:
print(-1)
else:
print(graph[1][k]+graph[k][x])
728x90
'알고리즘 문제 풀이 > Shortest Path' 카테고리의 다른 글
[백준]1753번: 최단경로 (0) | 2023.02.28 |
---|---|
[백준]18352번: 특정 거리의 도시 찾기 (0) | 2023.02.28 |
Floyd-Warshall 알고리즘 구현(python) (0) | 2023.02.28 |
다익스트라 알고리즘 구현 (python) (0) | 2023.02.28 |
[이코테]전보 (0) | 2023.02.27 |