sontg123   3년 전

일단 코드는 프림+ unionfind 사용해서 풀어본 코드입니다

랜덤 start(일단은1)부터 각 정점에서의 거리가 최소값인 것을 pq로 찾아서 풀었는데 생각해보니 연결이 따로따로 되있을때 연결 후에 그 연결된 다른 점들에서의 거리를 체크하지 못하더군요 

크루스칼로 풀자니 n이 1000인데 그럼 연결성분이 1000*(1000+1)/2 개가 나올테고 이거 거리들을 다 계산해서 정렬할라면 정렬만 5억이 넘어가는데 이게 시간이 될까 싶어서 일단 버렸습니다 (연결 되있는거 제외한다 쳐도 연결 안되있을테도 풀려야 할테니까..)

아이디어가 궁굼합니다 ㅜㅜ 힌트라도 주시면 감사하겠습니다

----------------------------------------------------------------------------------------------------

혹시나 같은 고민을 하는 분들을 위해 남깁니다

prim으로 풀때  이미연결된 점들 사이의 거리를 0으로 해서 기본과 같이 돌리면 통과가 됩니다

그리고 좌표 범위가1,000,000이라 double형 사용하면 됩니다!

코드는 고민하던 통과x인 코드 그대로 남겨두겠습니다~

Green55   3년 전

5억이란 값이 어떻게 나오신지 모르겠는데, 1000^2 * log2(1000^2)은 그렇게 큰 값이 아닙니다. 충분히 정렬 됩니다.

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