p_ce1052   3년 전

해볼 수 있는 예제는 많이 해 본 것 같은데 자꾸 틀렸습니다가 뜨네요.

//함수설명 

u_find 에서 만약 자신이 곧바로 루트와 연결되어있다면 루트는 자기 자신과의 거리가 0 이므로 어자피 거리갱신이 되지 않을 것이고 만약 루트였던 노드가 다른 노드에 연결되어 루트가 바뀐 상태라면 자신부터 새로운 루트까지의 거리는 부모로부터 새로운 루트까지의 거리를 더해줘야 할 것이므로 더해줍니다.

merge에서는 두 트리를 합칠 때, 한쪽에 속한 a와 다른 한쪽에 속한 b가 있을 때

a와 b의 거리가 w라면

w + dist[b] = dist[a] + a의 루트 ~ b의 루트까지의 거리 " 가 성립해야 하므로

a의 루트에 dist[b]+w-dist[a] 를 넣어주고 p[a의 루트] = b의 루트 로 설정해줍니다. 

roonm813   3년 전

반례입니다. 

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