tngus1140   2년 전

안녕하세요! 오랫만에 백준으로 돌아와 문제를 풀고있는 한 유저입니다.

다름이 아니라 예전에 다익스트라 알고리즘을 공부한 적이 있어 시험삼아 풀어보려고 해당 문제를 도전했습니다.

일단 시간 초과를 방지하기 위해 인접 행렬이 아닌 인접 리스트를 사용하였으며 비트마스크를 사용하여 방문 유무를 확인했습니다.

INF도 넉넉하게 999999999로 두었고, struct를 만들었기 때문에 가중치(거리)가 낮은 그래프부터 우선순위큐의 top에 위치하도록 compare 함수를 만들었습니다.

게시판에 올라와있는 대부분의 예제를 적용시켰으나 아쉽게 반례를 찾지 못했습니다.

어떤 부분을 잘못 작성하여 통과하지 못하는 걸까요..

WeissBlume   2년 전

https://www.acmicpc.net/board/... 와 동일한 문제를 갖고있으며, 노드의 개수가 1000개인 반면 bit는 32비트라 잘못된 동작을 합니다.

tngus1140   2년 전

아..! 맞네요

bit가 32비트니까 32개의 노드밖에 저장을 못하겠군요..

비트로 방문 처리하는걸 최근에 배워서 써먹으려고 했는데.. 역시 알고 써먹어야 되네요 ㅎㅎ.. 잘 기억하겠습니다!

빠른 댓글 감사합니다 WeissBlume님!

int bit 자체를 vector<bool> visited(V)로 바꿔서 해결했습니다.

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