1504번 - 특정한 최단 경로
10% 이상 넘어가면 틀리다고 하네요.
기본 로직은 PriorityQueue를 이용한 다익스트라입니다.
A, B를 꼭 방문을 해야 하므로
long dist1 = dijkstra(1, A) + dijkstra(A, B) + dijkstra(B, N); long dist2 = dijkstra(1, B) + dijkstra(B, A) + dijkstra(A, N);
long Answer = Math.min(dist1, dist2);
위와 같이 1 -> A -> B -> N, 1 -> B -> A -> N인 경우에서 최단을 선택을 했는데
통과가 잘 안되네요..
고수님들의 조언을 부탁드립니다.
아래분들의 도음으로 오버플로우를 감안하고 A <-> B간 최단은 한번만 구해도 되니.. 그렇게 처리를 했는데
0%에서 틀리던게 14%까지는 가네요...
접근방법은 맞아 보이는데.. 답답하네요.
dist의 형이 int네요
long이어야 하지 않을까요?
1. A와 B 사이의 거리는 어디서 출발해도 같습니다.
2. 마지막 출력할 때 dijkstra는 int를 반환하기 때문에 dist1, dist2를 구할 때 (long) 캐스팅이 필요할 것 같습니다.
댓글을 작성하려면 로그인해야 합니다.
filot 7년 전
10% 이상 넘어가면 틀리다고 하네요.
기본 로직은 PriorityQueue를 이용한 다익스트라입니다.
A, B를 꼭 방문을 해야 하므로
long dist1 = dijkstra(1, A) + dijkstra(A, B) + dijkstra(B, N);
long dist2 = dijkstra(1, B) + dijkstra(B, A) + dijkstra(A, N);
long Answer = Math.min(dist1, dist2);
위와 같이 1 -> A -> B -> N, 1 -> B -> A -> N인 경우에서 최단을 선택을 했는데
통과가 잘 안되네요..
고수님들의 조언을 부탁드립니다.
아래분들의 도음으로 오버플로우를 감안하고 A <-> B간 최단은 한번만 구해도 되니.. 그렇게 처리를 했는데
0%에서 틀리던게 14%까지는 가네요...
접근방법은 맞아 보이는데.. 답답하네요.