수로 건설
시간 제한3초메모리 제한256 MB
각 마을을 서로 다른 샘에 길이 제한을 만족하는 내리막 구간들로 이어 전체 수로 길이를 최소화합니다.
문제
브리타니아를 정복한 로마 장군 아그리콜라는 새로 얻은 도시마다 그 지방에 널린 샘물을 끌어오기로 했다. 참모 웨수스 와테루스가 수로 설계를 맡았다.
샘과 도시 사이에는 언덕과 골짜기가 있다. 수로는 구간을 이어 붙여 만들고, 모든 구간은 한 언덕 꼭대기에서 시작해 다른 언덕 꼭대기에서 끝난다. 물은 아래로만 흐르므로 구간은 반드시 더 높은 언덕에서 더 낮은 언덕으로 놓는다. 높이가 같은 두 언덕 사이에는 구간을 놓을 수 없다. 구간 아래에 언덕이나 샘, 도시가 있어도 상관없다. 그대로 뚫고 지나갈 수 있다. 다만 로마의 기술로 놓을 수 있는 구간 하나의 길이는 이하다.
구간의 길이는 두 언덕 꼭대기 사이의 3차원 유클리드 거리 이다. 샘에서 도시까지 이어지는 수로의 길이는 그 수로를 이루는 구간 길이의 합이다.
도시는 저마다 다른 샘에서 물을 받아야 하고, 한 샘이 두 도시를 맡을 수는 없다. 수로끼리 서로 교차해도 된다. 모든 도시에 물을 대는 수로 길이의 합을 가장 작게 만들어라.
입력
첫째 줄에 정수 , , , 가 주어진다. 은 언덕의 수 (), 는 샘의 수 (), 는 도시의 수 (), 는 구간 하나의 최대 길이 ()다.
다음 개 줄에는 언덕의 좌표와 높이를 나타내는 정수 , , 가 공백으로 구분되어 주어진다 (). 언덕 번호는 주어진 순서대로 1번부터 번이다.
다음 줄에는 정수 개가 공백으로 구분되어 주어진다. 샘이 있는 언덕의 번호다.
다음 줄에는 정수 개가 공백으로 구분되어 주어진다. 도시가 있는 언덕의 번호다.
한 언덕에 샘이나 도시는 최대 하나만 있다.
출력
모든 도시가 서로 다른 샘에서 물을 받도록 할 때 수로 길이 합의 최솟값을 소수점 아래 여섯 자리까지 반올림해 한 줄에 출력한다. 그렇게 물을 댈 방법이 없으면 IMPOSSIBLE을 출력한다.