if visited[curr] == 0:
continue
if visited[next] != 0 and d[next] <= d[curr] + cost:
continue
시작지점과 목적지까지 연결여부가 상관없다면 현재 위치의 방문여부를 체크하지 않는다.
https://www.acmicpc.net/problem/1865
음수간선이 있을 때, 다익스트라는 Que가 소진될 때까지 무한루프를 돌지만 벨만포드는 m개의 간선을 n번만큼만 돈다.
무한 사이클감지는 마지막 n번째 반복문에서 m개의 간선으로 최단거리 업데이트를 시도하고 성공했다면 무한 사이클로 판단할 수 있다.
시작 지점과 도착 지점간에 무한 사이클이 있는지 검사하는 방법은 무한 사이클에 포함된 노드로 부터 bfs를 이용해서 도착지점에 사이클이 연결되는지 알 수 있다.
최단거리 경로를 추적할 때 무한사이클이 경로에 없다면 유한한 순서를 구할 수 있다. bfs를 이용해서 시작지점부터 끝지점까지 더 나은 cost를 중점으로 탐색한다.