gkfkagkfka12   5년 전

C언어로 구현해서 좀 긴 편이지만 완벽하게 동작한다고 생각했는데 잘 안되네요.

질문검색란에 있는 대부분의 테스트 케이스까지 돌려봤고 다 맞는데 어디가 문제인지 모르겟습니다.

9%쯤에 틀립니다.

ehddml3   5년 전

Dijkstra함수 쪽에서 처음에 for문 돌리면서 모든 노드를 넣어주시는 것 같은데, 다시 사용될 가능성이 있기 때문에

Relax 가 된 이후에는 Relax되어 distance 값이 바뀐 v에 대해서 다시 Insert를 하는 과정이 필요합니다. 이런 과정을 거치게 하면 처음에는 s만 넣고 시작해도 잘 돌아갑니다.

또 그런 과정을 거치면 CreateHeap 과정에서 capacity 값을 늘려주어야 할 상황도 생길 수 있습니다. 실제로 제출 해보면 Segmentation fault가 일어나는 것 같아요.

위의 방법과 CreateHeap에서 minHeap size를 적당한 크기(size*2)로 맞춘 후에 제출해보았더니 63%정도에서 시간초과가 떴습니다.

시간 초과에 대해서는 아직 해결이 안되었네요ㄷ

gkfkagkfka12   5년 전

@ehddml3 시간초과는 도저히 해결못하겠는데 뭐가 문제일까요????

ehddml3   5년 전

다시 봐보니 vertex간의 연결관계를 Linked List로 구현하셨는데, 예를 들어 1에서 2로가는 간선이 30만개가 있다고 치면 ConnectVertex 함수에서 굉장히 많은 연산을 필요로 할 것 같습니다.

gkfkagkfka12   5년 전

그럼 배열로 구현하는게 나은건가요?

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