jyheo98   3년 전

다익스트라에서 priority_queue의 비위를 맞춰주기 위해서 음수로 distance를 넘겨주는게 마음에 안들어서

위에 struct cmp {
bool operator() (PII a, PII b)
{
return a.ff < b.ff;
}
};

를 추가하고

priority_queue,<PII, vector<PII>, cmp> pq;

이렇게 정의했습니다.

그런데 음수로 할때는 잘 되는데 이렇게 하면 시간초과가 납니다. 혹시 이유를 알려주실 수 있나요?

참고 문서는 : https://stackoverflow.com/questions/20826078/priority-queue-comparison

djm03178   3년 전

priority_queue는 원소가 큰 순서대로 뽑기 때문에 저렇게 구현할 경우 거리가 더 먼 원소를 먼저 뽑게 됩니다. 부등호 방향이 반대가 되어야 합니다.

jyheo98   3년 전

정말 감사합니다! 

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