gyenari00   3년 전

아래 소스는 맞았습니다를 받은 소스입니다. 궁금했던건

31번째 줄을

m = inf; 로 고치면 왜 틀리는 걸까요?

인접리스트를 이용했고 다익스트라 O(V^2) 방식을 이용했습니다. 즉 priority queue를 사용안하고 매번 정점을 하나하나 탐색하면서 거리가 최소인 정점을 찾아 방문하는 알고리즘입니다. 

31번째 줄 부분은 거리가 최소인 정점을 찾는 부분인데

m = inf; 이어야 하지 않나요? ㅠㅜㅠ

왜냐면 남은 모든 정점까지의 거리가 inf일 경우 이제 더이상 닿을 수 있는 정점이 없으니 종료해야 할 것같은데

m = inf + 1; 로 해주게 되면 종료를 안하게 되니까 틀릴것같은데 이해가 안됩니다....

질문 읽어주셔서 감사합니다.

mc_progw12   3년 전

inf값이 10억이라면, 34행에서 dist[i]가 모두 10억(최대 10억)일 때? 34행이 실행되지 않아(x 값이 산정되지 않아) 문제가 생기는 것 아닐까요?

cutecjh33   3년 전

dist[start] = 0이라 34행이 실행되지 않는 경우는 없습니다.

저도 같은 문제를 고민중인데 도무지 모르겠네요

왜 INF 보다 큰 값으로 해야만 하는건지...

댓글을 작성하려면 로그인해야 합니다.