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%까지는 가네요...

접근방법은 맞아 보이는데.. 답답하네요.

kkw564   7년 전

dist의 형이 int네요

long이어야 하지 않을까요?

cocomo1316   7년 전

1. A와 B 사이의 거리는 어디서 출발해도 같습니다.

2. 마지막 출력할 때 dijkstra는 int를 반환하기 때문에 dist1, dist2를 구할 때 (long) 캐스팅이 필요할 것 같습니다.

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