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

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

가까운 점 찾기

시간 제한3초메모리 제한128 MB

요약
N개 점 각각에 대해 다른 점까지의 최소 제곱 거리를 구한다.
난이도

어려움10점 중 8점

유형
분할 정복, 정렬, 기하, 이분 탐색
정답자
아직 제출이 없습니다

문제

2차원 평면 위에 NN개의 점이 주어진다. 점 ii의 좌표를 (xi,yi)(x_i, y_i)라고 하자.

두 점 ii, jj 사이의 거리를 다음과 같이 정의한다.

dist⁡(i,j)=(xj−xi)2+(yj−yi)2\operatorname{dist}(i, j) = (x_j - x_i)^2 + (y_j - y_i)^2

즉, 두 점 사이의 유클리드 거리의 제곱이다.

각각의 점 ii에 대하여, 자기 자신을 제외한 다른 모든 점까지의 거리 중 최솟값

min⁡1≤j≤N, j≠idist⁡(i,j)\min_{1 \le j \le N,\ j \ne i} \operatorname{dist}(i, j)

을 구하여 출력하여라.

입력

입력은 여러 개의 테스트 케이스로 이루어진다.

첫 번째 줄에 테스트 케이스의 개수 TT (1≤T≤151 \le T \le 15)가 주어진다.

각 테스트 케이스의 첫 번째 줄에는 점의 개수 NN (2≤N≤1052 \le N \le 10^5)이 주어진다. 이어지는 NN개의 줄에는 각 점의 좌표 xix_i, yiy_i (0≤xi,yi≤1090 \le x_i, y_i \le 10^9)가 공백으로 구분되어 주어진다.

출력

각 테스트 케이스마다 NN개의 줄을 출력한다.

ii번째 줄에는 점 ii에 대한 min⁡1≤j≤N, j≠idist⁡(i,j)\min_{1 \le j \le N,\ j \ne i} \operatorname{dist}(i, j)의 값을 출력한다.

서로 다른 두 점이 같은 위치에 있을 수도 있으며, 이 경우 그 값은 00이다.

예제2

  1. 예제 1

    입력
    2
    10
    17 41
    0 34
    24 19
    8 28
    14 12
    45 5
    27 31
    41 11
    42 45
    36 27
    15
    0 0
    1 2
    2 3
    3 2
    4 0
    8 4
    7 4
    6 3
    6 1
    8 0
    11 0
    12 2
    13 1
    14 2
    15 0
    
    예상 출력
    200
    100
    149
    100
    149
    52
    97
    52
    360
    97
    5
    2
    2
    2
    5
    1
    1
    2
    4
    5
    5
    2
    2
    2
    5
    
  2. 예제 2

    입력
    1
    3
    0 0
    3 4
    0 10
    
    예상 출력
    25
    25
    45