이차원 평면에 개의 도시가 있다. 번째 도시의 위치는 이다. 모든 도시가 서로 연결되도록 도로망을 건설하려고 한다. 도로망은 도시, 추가된 거점 및 이들을 잇는 도로로 이루어진다.
도로망을 건설할 때 다음과 같은 규칙을 지켜야 한다:
모든 도시가 서로 연결되어 있다는 것은 임의의 한 도시에서 도로를 통해 거점과 도시를 거쳐 다른 모든 도시에 갈 수 있음을 의미한다.
모든 도시가 서로 연결되도록 도로망을 건설하기 위해 필요한 도로 길이 총합을 최소화하는 프로그램을 작성하라.
첫 줄에 도시의 수를 나타내는 정수 이 주어진다. ()
이어지는 개의 줄의 번째 줄에는 번째 도시의 위치를 나타내는 두 정수 와 가 공백으로 구분되어 주어진다. ()
서로 다른 두 도시가 같은 위치에 있는 경우는 주어지지 않는다.
첫 줄에 모든 도시가 서로 연결되도록 도로망을 건설하기 위해 필요한 도로 길이 총합의 최솟값을 출력한다.
그다음 줄에 도로망을 건설하기 위해 필요한 도로의 수 을 출력한다.
개의 줄에 걸쳐 도로망을 구성하는 도로에 대한 정보를 출력한다. 이중 번째 줄에 네 정수 를 공백으로 구분하여 출력한다. 이는 번째 도로가 에 있는 거점 혹은 도시와 에 있는 거점 혹은 도시를 잇는다는 것을 의미한다. (; ; 또는 )
가능한 모든 입력에 대해 출력 형식을 만족하는 도로망이 존재함을 증명할 수 있다.
5 4 8 3 6 5 4 2 2 7 8
13 7 2 2 2 4 2 4 4 4 4 4 4 6 4 6 4 8 4 8 7 8 3 6 4 6 4 4 5 4
위 그림은 출력 예제의 답을 나타낸다. 검은색 원은 도시를 의미하고, 베이지색 원은 거점을 의미하고, 실선은 도로를 의미한다.
입력 케이스들은 다음과 같은 종류로 구별되며, 한 종류의 케이스를 다 맞혀야 그 종류에 배정된 점수를 받을 수 있다.
종류 1: 4점
종류 2: 6점
종류 3: 12점
;
종류 4: 28점
종류 5: 34점
종류 6: 16점
추가적인 제한 조건이 없음.
실제 도로망을 구성하여 출력하지 않고, 첫 줄에 최솟값만 출력하여 정답과 같으면 50%의 부분 점수를 받는다.