32, 33, 39줄에 공통적인 오류가 있습니다.
같은 두 지점을 잇는 경로가 여러번 나올 경우, 걸리는 시간에 상관없이 마지막으로 들어온 값을 저장하게 됩니다.
예를 들어 1 2 2 와 1 2 100 이 들어오면 dst[1][2] = 100이 되겠죠.
INF의 값도 문제가 있습니다. 50줄에서 dst[i][k]와 dst[k][j]가 모두 INF라면, dst[i][k] + dst[k][j] = 1987654321 * 2가 되는데, 이 값은 int 범위를 벗어나게 되어 -319658654라는 엉뚱한 값이 됩니다.
만약 dist[i][j]가 이 값보다 크다면 이 값으로 바뀌게 되죠.
gi5005 3년 전
플로이드-와샬 알고리즘을 써서 dst 간선들을 모두 최소값으로 갱신한뒤
for(int i=1;i<=N;i++) 돌면서 dst[i][i]가 음수인 경우가 있으면 YES 아니면 NO이런 식으로 구현했는데 어디서 틀린건지 모르겠습니다.