simm4256   6년 전

다익스트라 문제에서 pq의 설정에 따라 아래처럼 답이 맞거나 틀립니다.

첫 번째는 pq의 노드를 pair<int,int>로 설정했고 그에 따라 compare 함수로 greater<pair<int,int>>를 사용했습니다.

두 번째는 pq의 노드를 커스텀 struct로 설정했고 operator< 를 오버로딩하여 min heap을 구현했습니다.

아무리 생각해도 두 코드의 차이점을 모르겠네요 ㅠㅠ

kajebiii   6년 전

greator<int, int>로 정의하였을때

priority_queue에서 pi의 우선순위는

first를 먼저 비교하고, first가 같다면 second를 비교하여 알려줍니다.


즉, 틀린답의 코드는 first를 먼저 비교하는 연산자를 이용하고 있고, 

맞는답의 코드는 직접 bool operator를 구현해주셔서 second를 먼저 비교하는 연산자를 이용하고 계십니다.


감사합니다.

simm4256   6년 전

정말 감사합니다.

pair의 비교 우선순위가 first부터임을 간과하고 있었네요..

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