나가시 소멘
시간 제한8초메모리 제한512 MB
공간 위 N개의 점과 최대 K개의 아래로 흐르는 수로가 주어질 때, 모든 점을 지나면서 각 수로의 높이가 엄격히 감소하도록 배치할 때 전체 길이의 최솟값을 구한다.
문제
야구부 주장 나츠메 씨는 나가시 소멘 파티를 열기로 했다. 처음에는 경기장에 홈통을 놓고 부원들이 홈통 옆에 서서 소멘을 먹게 할 생각이었다. 하지만 부원들은 워낙 별나서 저마다 자기만의 특별한 위치에 붙어 있으려 하고, 홈통 옆으로 이동하기를 거부했다. 그들은 나츠메 씨에게 홈통이 자기들의 특별한 위치를 지나가게 해 달라고 요청했다. 부원들이 좀처럼 뜻을 굽히지 않자, 나츠메 씨는 그 요청을 들어주기 위해 홈통을 다시 배치하려 했다.
야구부의 관리인으로서, 당신은 나츠메 씨가 홈통을 배치하도록 도와야 한다. 배치 규칙은 다음과 같다.
- 각 홈통은 임의의 지점에서 시작하고 끝날 수 있다. 또한 임의의 지점에서 어느 방향으로든 휘어질 수 있지만, 가지가 갈라지거나 다른 홈통과 합쳐질 수는 없다.
- 각 홈통은 높이가 진행 방향을 따라 엄격히 감소하도록 놓아야 한다. 그렇지 않으면 소멘이 흐르지 않는다.
- 나츠메 씨는 물 미끄럼틀 기계를 K대만 가지고 있으므로 홈통을 K개보다 많이 만들 수 없다.
- 물론, 모든 부원이 소멘을 먹을 수 있도록 홈통은 모든 특별한 위치를 지나야 한다.
또한 비용을 아끼기 위해, 홈통의 총 길이가 가능한 한 작도록 배치하려 한다. 모든 홈통의 총 길이의 최솟값은 얼마인가?
입력
입력은 여러 데이터 세트로 이루어진다. 각 데이터 세트는 다음 형식을 따른다.
N K
x1 y1 z1
...
xN yN zN
N (1 ≤ N ≤ 100)은 부원의 수, K (1 ≤ K ≤ 4)는 사용할 수 있는 홈통의 수, xi, yi, zi (-100 ≤ xi, yi, zi ≤ 100)는 i번째 부원의 좌표다. 모든 수는 정수다. 부원들의 좌표는 모두 다르다.
두 개의 0으로 이루어진 줄이 입력의 끝을 나타낸다.
출력
각 데이터 세트마다 모든 홈통의 총 길이의 최솟값을 유클리드 거리로 한 줄에 출력한다. 답의 절대 오차는 10-9를 넘어서는 안 된다. 홈통을 배치할 수 없다면 -1을 출력한다.