kyr9389   2년 전

해당 문제를 다익스트라를 구현해서 풀어보려고 했는데, 메모리 초과를 받았습니다.

제 생각으로는 제한된 메모리 이상을 사용한것 같지는 않은데, 어느 부분에서 메모리가 많이 사용되었는지 모르겠어서 질문 드립니다.

아래는 제가 예상한 최대 메모리입니다.

---

int 변수 2개를 멤버로 가진 node 구조체 : (4*2) 8바이트 * 최대 간선(300,000) = 2,400,000 바이트
int arr[20001] = 4*20001 = 80,004 바이트
vector 컨테이너 (노드) 8바이트 * 20001 = 160,008 바이트
우선순위큐 컨테이너 (노드) 8바이트 * 20001 = 160,008 바이트

= 2.67mb

---

문제의 조건인 256mb에 못 미치는것 같은데, 어느 부분을 잘못 생각한건지 도움 주시면 감사하겠습니다.

아래에 메모리 초과가 발생했던 코드를 첨부합니다.

djs100201   2년 전

다익스트라 부분에서 틀렸습니다.

kyr9389   2년 전

@djs100201 답변 감사합니다. 다익스트라를 살짝 수정해서 문제는 맞췄습니다.

그런데 메모리를 산출하는건 저렇게 하는게 맞는걸까요? 

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