아직 만들고 있는 페이지입니다.

이 페이지는 아직 만드는 중입니다. 보이는 내용은 바뀔 수 있습니다.

814 - 3

시간 제한4.814초메모리 제한814 MB

요약
무작위로 주어진 8000개 도시를 140명의 세일즈맨에게 나누고 각자 닫힌 순회 경로를 정해, 가장 긴 경로 길이를 최소화한다.
난이도

어려움10점 중 9점

유형
기하, 그리디, 힙, 구현
정답자
아직 제출이 없습니다

문제

최근 불어온 TSP(Traveling Salesman Problem)의 열기에 힘입어 다음과 같은 문제를 만들었다:

2차원 평면 위에 NN개의 도시가 있다. ii번째 도시의 좌표는 (xix_i, yiy_i)로 나타난다.

회사는 NN개의 도시를 KK명의 외판원에게 분배한다. kk번째 외판원이 받은 도시의 개수를 ckc_k라고 하자.

각 외판원은 받은 도시를 순회할 순서 pk,1p_{k,1}, pk,2p_{k,2}, ⋯\cdots, pk,ckp_{k,c_k}를 정하여, pk,1p_{k,1}부터 순서대로 모든 도시를 돌고 다시 pk,1p_{k,1}로 되돌아온다. 이때, 각 외판원이 이동하는 거리의 최댓값을 최소화하라.

ii번 도시와 jj번 도시 사이의 거리 d(i,j)=(xi−xj)2+(yi−yj)2d(i,j)=\sqrt{(x_i-x_j)^2+(y_i-y_j)^2}이며, 문제는 결국 max⁡k=1K∑j=1ckd(pk,j,pk,j+1)\max_{k=1}^{K} {\sum_{j=1} ^{c_k} d(p_{k,j}, p_{k,j+1})}를 최소화하는 것이다. 편의상, pk,ck+1=pk,1p_{k,c_k+1}=p_{k,1}이다.

입력

첫 번째 줄에 도시의 개수 N=8  000N=8 \; 000과 외판원의 수 K=140K=140가 주어진다.

다음 NN개의 줄의 ii번째 줄에는 ii번 도시의 좌표를 나타내는 두 정수 xi,yix_i, y_i (0≤xi,yi≤814  0000 \leq x_i, y_i \leq 814 \; 000)가 주어진다.

주어지는 xi,yix_i, y_i는 주어진 범위 내의 정수 중 하나를 모두 동일한 확률로 선택하여 만들어진다.

채점에는 총 50개의 입력이 사용되며, 총점은 각 점수의 합이다.

출력

KK개의 줄에 걸쳐 답을 출력해야 하며, kk번째 줄에는 ckc_k, pk,1p_{k,1}, pk,2p_{k,2}, ⋯\cdots, pk,ckp_{k,c_k}가 순서대로 출력되어야 한다.

출력에서 모든 외판원은 적어도 하나의 도시를 분배받아야 하고, 모든 도시는 정확히 한 번씩 등장해야 한다.

예제1

  1. 예제 1

    입력
    3 2
    0 0
    3 0
    3 1
    
    예상 출력
    2 3 2
    1 1