본문 바로가기
코딩 테스트/최단 경로

미래 도시

by hazel_ 2021. 3. 9.
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

댓글