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):
graph[i][i]=0
for i in range(m):
a, b=map(int, input().split())
graph[a][b]=1
graph[b][a]=1
# 목적 노드, 거쳐가는 노드
x, k = map(int, input().split())
for _k in range(1, n+1):
for a in range(1, n+1):
for b in range(1, n+1):
graph[a][b] = min(graph[a][b], graph[a][_k]+graph[_k][b])
distance = graph[1][k] + graph[k][x]
if distance >= INF:
print("-1")
else:
print(distance)
p. 259
'코딩 테스트 > 최단 경로' 카테고리의 다른 글
전보 (0) | 2021.03.10 |
---|---|
플로이드 워셜 알고리즘 (0) | 2021.03.09 |
다익스트라 최단 경로 알고리즘 (0) | 2021.02.28 |
최단 경로 이론 (0) | 2021.02.28 |
댓글