inseonyun / Algorithm

알고리즘 문제 풀이
0 stars 0 forks source link

[Bellman-Ford] 백준 : 11657_타임머신 #39

Closed inseonyun closed 2 years ago

inseonyun commented 2 years ago

Source URL : https://www.acmicpc.net/problem/11657

inseonyun commented 2 years ago

문제 요구사항

접근 방법

풀이 순서

  1. N(도시의 개수) M(버스 노선의 개수)을 입력 받는다
  2. 전역 변수로 선언해둔 dist[501]를 N 크기만큼 INF(987654321) 값으로 초기화 한다.
  3. M의 크기만큼 반복하여, a(출발 정점), b(도착 정점), c(가중치) 값을 입력 받아 map[a].push_back( {b, c} )로 값을 저장한다.
  4. 3개의 반복문을 사용한다.
    • i는 싸이클을 체크할 수 있는 반복문이다.
    • j는 출발 정점을 의미 한다.
    • k는 도착 정점을 의미 한다.
    • dist[ map[ j ][ k ] ] ( j 출발 k 도착) 값이 dist[ j ] + map[ j ][ k ] 값보다 크면 dist[ map [ j ][ k ] ]값을 갱신해준다.
    • 이때, i값과 N 값이 같으면 싸이클을 도는 것이므로 cycle 변수에 true로 checking한다.
  5. cycle이 true면 -1을 출력하고, 아니라면, i = 2부터, N 크기만큼 반복하여 dist의 정보를 출력한다. 이때, dist의 정보가 INF값이라면 -1을 출력하고 계속해서 출력한다.
inseonyun commented 2 years ago

[ 문제 풀이 결과 ]

image