- 다익스트라에서는 반드시 거리가 가까운 것을 먼저 우선순위 큐에서 빼야 합니다. 그런데 pair<int, int>는 항상 "first끼리 먼저 비교하고, first가 같은 경우에만 second를 비교"합니다. 이 코드에서는 정점 번호를 first에 넣었기 때문에 정점 번호를 먼저 비교하게 되고, 이 번호에는 아무런 의미가 없으므로 불필요하게 정점들이 계속 우선순위 큐에 잘못 들어가고 잘못된 순서로 나오게 됩니다. 거리를 first에 넣어야 합니다.
- 39번째 줄, 거리가 갱신될 때에만 우선순위 큐에 넣는 것이 좋습니다. 갱신되지 않고 같은 경우에는 넣는 것이 불필요합니다.
oiaxi 5년 전
통과하는 답이랑 아무리 비교해도 어느부분이 다른지를 모르겠어요 ㅠㅠ..
전체 어레이를 표현하지도 않았는데 왜 메모리가 초과될까요?