동적할당(new)를 빼보세요.
1504번 - 특정한 최단 경로
해결했습니다. 우선순위큐의 compare 매개변수와 관련이 있었습니다.
사전지식
글 읽기 - [c++] 우선순위 큐 비교함수 (acmicpc.net)
우선순위큐 less(대신에 operator< 리턴 반대로)-> max힙이됨(가중치가 큰값부터 나오기때문에 리턴값을 반대로 하여 min힙 처럼 구현)
우선순위큐 greater-> min힙이됨(가중치가 작은값이 먼저나오기때문에 부합함)
이거는 비교하기 위해서 우선순위큐 대신에 그냥 큐 사용
잘못구현된 코드-우선순위큐less가 되기 때문에 max힙이됨.가중치가 큰값부터 튀어나옴.최악임.
시간
우선순위큐 min힙: 40~44ms
큐: 44ms
잘못구현된 우선순위큐 max힙: 176~200ms
우선순위큐 vs 큐 비교글
글 읽기 - 큐 vs 우선순위_큐 다익스트라 구현 (acmicpc.net)
이 문제에서는 E: 200000(20만), V:800 (E: 간선, V: 정점)
댓글을 작성하려면 로그인해야 합니다.
phcdream 3년 전
다익스트라 2번으로 풀었습니다만, 왜 다른 다익스트라3번 쓴 코드에 비해 시간이 두배넘게 걸릴까요??
다른코드는 60~80ms 인데, 170ms나 걸립니다.
170ms 코드(이 글의 아래 소스코드랑 같음)
24196119번 소스 코드 (acmicpc.net)
다익스트라3번코드
24186969번 소스 코드 (acmicpc.net)
다익스트라3번코드 최근 제출해본 링크
24196258번 소스 코드 (acmicpc.net)
+) 추가로 다익스트라 3번쓴 코드에서는 우선순위큐에서 구해놓은 거리가 더작을경우,
for문 추가로 안돌려도 되는 부분까지 실행하는데도 왜 더느릴까요??
어디서 빼먹은 구현이 있을까요??