wowjd123589   2년 전

21번째 줄의 

if dist[ev] != ew: continue 질문드리고 싶습니다

dist[ev] != ew인 경우경우는 다시 while문으로 돌아가서 heap에서 다시 pop을 합니다
dist[ev] == ew인 경우는 continue의 밑줄을 실행하며 ev에 연결된 노드를 처리합니다

질문1)코드자체는 이해가 가는데 각각의 경우 왜위와같이 하는건가요?

질문2) !=말고 

if dist[ev] > ew:

if dist[ev] < ew:

로 고쳐도 다 맞네요.. 왜그런거죠?..

qhsl1213   2년 전

continue로 걸러주는 이유는, 그 노드까지의 최단거리를 마지막으로 업데이트한 최신값이 아닌, 옛날 값들이 큐에 들어있을 수 있기때문입니다. 그런경우에는 그 값을 버려야하므로 큐에 있는 다음 값을 뽑습니다.

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