9370번 - 미확인 도착지
다익스트라를 3번써서 풀었습니다. 문제는 테스트 케이스를 한번씩 할때마다 weight라는 2차원배열을 초기화 하는 create_graph함수를 호출합니다.
create_graph의 시간복잡도가 O(n^2)인데 이거를 테스트 케이스가 돌때마다해서 O(n^3)을 으로 시간복잡도가 되서 시간초과가 뜨는걸까요??
아니면 마지막에 출력을 맞출려고 정렬시 퀵소트O(n*logn)을 사용하는것이 문제일까요.
출력은 에제 출력과 동일하게 터미널상에서 나오는데 시간복잡도를 줄이지를 못하겠습니다.
이차원 배열로 다익스트라를 돌리면 시간 복잡도가 T(|V|^2 + logE)가 나옵니다. 모든 노드가 한번씩은 큐에서 뽑히는데 한 노드 당 V만큼 if문을 돌려야 하기 때문에 V^2이 걸리고 큐에 최대 E(실제 엣지 개수) 만큼 들어가기 때문입니다. 이차원 배열은 플로이드 쓰거나 E가 V^2에 근접하는 거 아니면 쓰지 않는 걸 추천드립니다.
위에 시간복잡도 logE가 아니라 ElogE입니다.
댓글을 작성하려면 로그인해야 합니다.
yangmin0513 4년 전
다익스트라를 3번써서 풀었습니다. 문제는 테스트 케이스를 한번씩 할때마다 weight라는 2차원배열을 초기화 하는 create_graph함수를 호출합니다.
create_graph의 시간복잡도가 O(n^2)인데 이거를 테스트 케이스가 돌때마다해서 O(n^3)을 으로 시간복잡도가 되서 시간초과가 뜨는걸까요??
아니면 마지막에 출력을 맞출려고 정렬시 퀵소트O(n*logn)을 사용하는것이 문제일까요.
출력은 에제 출력과 동일하게 터미널상에서 나오는데 시간복잡도를 줄이지를 못하겠습니다.