File tree Expand file tree Collapse file tree 1 file changed +37
-0
lines changed
Expand file tree Collapse file tree 1 file changed +37
-0
lines changed Original file line number Diff line number Diff line change 1+ # 노드의 개수 및 간선의 개수를 입력 받습니다.
2+ n , m = map (int , input ().split ())
3+ # 2차원 리스트를 만들고, 모든 값을 무한으로 초기화합니다.
4+ adj = [[1e9 ] * (n + 1 ) for _ in range (n + 1 )]
5+
6+ # 자기 자신에서 자기 자신으로 가는 비용은 0으로 초기화합니다.
7+ for a in range (1 , n + 1 ):
8+ for b in range (1 , n + 1 ):
9+ if a == b :
10+ adj [a ][b ] = 0
11+
12+ # 각 간선에 대한 정보를 입력 받아, 그 값으로 초기화합니다.
13+ for _ in range (m ):
14+ # A와 B가 서로에게 가는 비용은 1이라고 설정합니다.
15+ a , b = map (int , input ().split ())
16+ adj [a ][b ] = 1
17+ adj [b ][a ] = 1
18+
19+ # 거쳐 갈 노드 x와 최종 목적지 노드 k를 입력 받습니다.
20+ x , k = map (int , input ().split ())
21+
22+ # 플로이드 워셜 알고리즘을 정의합니다.
23+ def solve ():
24+ for k in range (1 , n + 1 ):
25+ for a in range (1 , n + 1 ):
26+ for b in range (1 , n + 1 ):
27+ adj [a ][b ] = min (adj [a ][b ], adj [a ][k ] + adj [k ][b ])
28+
29+ # 플로이드 워셜 알고리즘을 수행합니다.
30+ solve ()
31+
32+ # 수행된 결과를 출력합니다.
33+ distance = adj [1 ][k ] + adj [k ][x ]
34+ if distance >= 1e9 :
35+ print ("-1" )
36+ else :
37+ print (distance )
You can’t perform that action at this time.
0 commit comments