i_am_commang   2년 전

지금은 이 문제를 여우는 그냥 다익스트라를 돌리고

늑대는 1번째 그루터기에서 a번째로 간다고 했을 때

1번에서 빠르게 가면 1번에서 a+n으로 가고, 느리게 간다고 하면 1+n에서 a로 가도록

즉 빠르게 가는 상황이면 1 ~ n번에서 가고 느리게 가는 상황이면 1+n ~ 2n에서 가도록 

그래프를 다시 만들고 다익스트라를 돌렸습니다.

무엇인가 제가 모르는 작은 실수인가 해서 조금씩 바꾸기도 해보고

알고리즘이 이상한가 해서 처음의 방법인 하나의 그래프에서 늑대의 상태만 바꿔가면서 다익스트라 도는 방법에서

지금의 방법으로 바꾸기도 해보았습니다. 

하지만 계속 메모리 초과가 됩니다...

어디에서 문제가 생겼는지 아니면 간단한 추측, 힌트라도 알려주실 수 있으신가요?ㅠㅠ..

woolim   2년 전

확실하진 않지만 23번줄에 if 조건문이 next.first + cur.first > arr[next.second] 이여서

next.first + cur.first == arr[next.second] 인 경우에 실제로 distance가 업데이트 되지 않지만 pq가 쌓여서 메모리초과가 나는것 같아요

23번줄을 next.first + cur.first >= arr[next.second] 로 바꿔보세요

i_am_commang   2년 전

와ㅠㅠㅠㅠㅠㅠㅠㅠㅠㅠㅠ

선생님 감사합니다ㅠㅠㅠㅠ;;

다익스트라 문제를 오랜만에 푸는데 

다음에 갈 노드 찾는 걸 항상 next.first + cur.first > arr[next.second]라고만 했던 것 같아서

그쪽 조건문은 안보고 있었는데....

=하나 때문에 계속 메모리가 쌓이고 있었네요, 다음부터 이런 실수 하지 않겠습니다;;;

정말로 감사합니다!!!!!!!

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