hssk1528   4년 전

처음에 다익스트라로 구현할 때

각 도시까지 소요되는 시간을 기준으로 우선순위 큐를 사용하여

해당 소요 비용에 따른 최소 소요시간을 업데이트 해나가는 방식으로 구현했습니다.

그런데 계속 메모리 초과가 뜹니다ㅜㅜ

다른 방식으로 구현하여 정답을 받긴했지만 이 방법이 왜 메모리 초과가 나는지 궁금합니다..

다른 분들 풀이를 찾아 봤을 때 저와 비슷하게 구현한 것들이 많던데 

왜 저만 메모리 초과가 나는지 모르겠습니다ㅠ 도와주시면 감사하겠습니다..

kyunamk   4년 전

아래 부분에서 .. 일단 이미  queue 되어진 것이 있다 해도 다시 push 되므로 multi path가 되는 경우, 값을 떠나서 아주 많은 양이 push 될 수 있습니다..

if (time[there[0]][money + there[1]] > t + there[2]) {
time[there[0]][money + there[1]] = t + there[2];
q.push(vector{-t - there[2], there[0], money + there[1]});
}

there과 money가 이미 queue in 되어 있으며 더이상 push 하지 않는 logic을 구현하다면, memory over는 나지 않을 것 같습니다.

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