js8662   3년 전

안녕하세요! 다익스트라 알고리즘으로 푸는 1753번 메모리 초과 질문 드립니다!

main에서 함수를 일일히 부르게 해서 visited와 dist 벡터를 일일히 만들어놨더니 메모리 초과 오류가 생기는 것 같더라고요,,,


dijkstra함수를 접속할 때마다 매번 visited와 dist 벡터를 생성해내지 않고,

c++의 stl vector 함수에서 vector visited와 dist를 매번 해당하는  false 와 INF로 초기화할 수 있는 함수 없을까요?(clear는 0으로 초과한다고 나와서 질문드립니다!) 

아니면 iterator로 일일이 다  처리를 해야 할까요?

아니면 더 좋은 방법 있을까요?

감사합니다!!!!!!!!

sait2000   3년 전

이 문제는 다익스트라를 한 번만 돌려서 푸는 문제입니다.

js8662   3년 전

한번으로 고쳤는데도 메모리 초과가 나네요....

js8662   3년 전

가중치가 10이하라고 해서 바꿔도 메모리 초과.............가 나네요ㅠㅠ

sait2000   3년 전

제가 보기엔 W가 문제인 것 같습니다. 정점이 2만개이면 W의 크기가 최소 int 4억개고 그러면 대략 1.5GB의 메모리입니다. 인접 행렬 말고 인접리스트와 우선 순위 큐를 이용한 다익스트라 알고리즘을 구현해 보세요. 우선 순위 큐를 안 사용하는 방법도 있긴 합니다만 아무튼 인접행렬을 사용할 순 없습니다.

sait2000   3년 전

https://www.acmicpc.net/board/view/34516

FAQ입니다. 참고하세요.

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