bgg0223   4년 전

크루스칼 알고리즘으로 문제를 풀었는데요!

find함수에서

- 시간 초과 나는 경우

else{

   return find(x); 

}

이렇게 하면 시간초과 나고

- 시간 초과 나지 않는 경우

else{

  return top[x] = find(x);

}

이렇게 하면 시간초과 나지않고 해결됩니다.

둘이 무슨 차이인가요?? 

sait2000   4년 전

두 번째 경우는 반환해야 하는 값을 계산한 다음 그 값을 따라 올라갔던 모든 자리에 기록하므로 다음번에 다시 계산을 할 때 시간이 덜 걸립니다. 이름도 있습니다. 경로 압축 최적화라고.

첫 번째 거는 다음과 같은 입력이 들어오면 O(n^2)라서 시간초과가 날 겁니다 아마.

2 1 1

3 2 1

4 3 1

5 4 1

...

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