BOJ 25782 Desert Travel
BOJ 25782 Desert Travel
문제 내용
좌표평면에 개의 점이 있습니다. 번 점에서 번 점으로 이동하려고 할 때, 그 과정에서 0개 이상의 점을 거쳐서 갈 수 있습니다. 한 점에서 다른 점으로 직접 이동할 때는 그 거리만큼의 비용이 들며, 경로 전체의 비용은 각각의 비용의 최댓값입니다. 의 쌍이 여러 개 주어질 때, 각각에 대해 최소 비용을 구하세요.
입력
첫 줄에는 점의 개수 이 주어집니다. ()
다음 줄에는 각 점의 좌표 가 한 줄에 하나씩 주어집니다. () 좌표는 모두 정수입니다.
다음 줄에는 쿼리의 개수 가 주어집니다. ()
다음 줄에는 각 쿼리의 정보 가 한 줄에 하나씩 주어집니다. ()
출력
각 쿼리에 대해, 에서 로 가는 경로 중 비용이 가장 작은 것의 비용을 출력하세요. 절대 또는 상대 오차가 이하이면 정답으로 인정됩니다.
문제 풀이
스포일러
먼저 minimum spanning tree를 구합니다. 이 아주 크지 않고 시간과 메모리가 충분히 주어지므로, 개의 가능한 간선을 모두 고려하여 스패닝 트리를 만들 수 있습니다.
그러고 나서 스패닝 트리 위에서 sparse table을 사용한 LCA 등을 이용하여 두 점 사이의 경로 위의 최댓값을 구할 수 있습니다.
Last updated on