1753번 - 최단경로
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:
로 고쳐도 다 맞네요.. 왜그런거죠?..
continue로 걸러주는 이유는, 그 노드까지의 최단거리를 마지막으로 업데이트한 최신값이 아닌, 옛날 값들이 큐에 들어있을 수 있기때문입니다. 그런경우에는 그 값을 버려야하므로 큐에 있는 다음 값을 뽑습니다.
댓글을 작성하려면 로그인해야 합니다.
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:
로 고쳐도 다 맞네요.. 왜그런거죠?..