seokgukim   1년 전

일단 다음과 같은 논리로 진행했습니다.

  1. 입력받은 각 역 이름에 대해 해싱해 가며 각 역 사이의 간선을 vector로 관리한다.
  2. 입력받은 쿼리에 대해 시작역/도착역 이름을 해싱한 값을 이용해 너비 우선 탐색을 돌린다.
  3. 너비 우선 탐색의 특성상, 가장 먼저 도착역에 도달했을 때의 깊이에서 최소 시간이 될 것이므로, 도착역에 도달하면 바로 값을 리턴하고 출력한다.

가능한 모든 경우를 상정해야 하므로 모든 가능한 간선에 대해 탐색했는데, 계속 5%에서 시간 초과가 나네요.

일단 해싱 방법은 여러가지를 시도해 봤지만 전혀 나아지는게 없는 듯 하고...

이 외의 접근 방식은 잘 떠오르지 않아서 혹여나 실마리나마 제공해주실 수 있을까 여쭤봅니다.

bnb2011   1년 전

현재 풀이대로라면, 매 쿼리마다 BFS를 이용해 최단 거리를 찾게 되므로 시간복잡도가 O(Q(N+M))이 됩니다. 간선이 최대 20만개이므로 TLE가 날 수 밖에 없겠네요.

문제에서 주어지는 환승역의 개수가 최대 20개라는 점을 이용해보시면 풀이에 도움이 되실 것 같습니다.

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