적진 탈출

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

요약
격자에 놓인 적 기지들을 피해 시작점에서 집결지까지 가면서 유지할 수 있는 최대 안전거리와 그 조건을 만족하는 최단 경로의 이동 횟수를 구하는 문제입니다.
난이도

보통10점 중 7점

유형
이분 탐색, BFS, 그래프
정답자
아직 제출이 없습니다

문제

소규모 특공대가 적진 깊숙이 침투했다. 임무를 막 끝낸 이들은 이제 붙잡히지 않고 집결지로 복귀해야 한다. 안전을 위해 이들은 모든 적 기지로부터 가능한 한 멀리 떨어진 경로를 따라가려 한다.

지역은 정수 좌표 (x,y)(x, y)로 이루어진 직사각형 격자로 나타내며, 0≤x<X0 \le x < X, 0≤y<Y0 \le y < Y이다. 특공대는 한 걸음마다 상하좌우 중 한 방향으로 한 칸 이동하며, 경로는 격자 밖으로 나갈 수 없다. 거리는 맨해튼 거리로 측정한다.

dist⁡((x1,y1),(x2,y2))=∣x2−x1∣+∣y2−y1∣.\operatorname{dist}((x_1, y_1), (x_2, y_2)) = |x_2 - x_1| + |y_2 - y_1|.

한 경로의 이격도(separation) 는 그 경로가 지나는 모든 칸(출발점과 집결지 포함)과 모든 적 기지 사이의 맨해튼 거리 중 최솟값이다. 특공대는 먼저 이 이격도를 최대화하려 한다. 이격도가 최대가 되는 경로가 여러 개라면, 그중 이동 횟수가 가장 적은 경로를 택한다. 격자 밖의 적 기지는 존재하지 않으므로 고려하지 않는다.

입력

첫 줄에 테스트 케이스의 수 TT (1≤T≤100)(1 \le T \le 100)가 주어진다. 각 테스트 케이스는 다음과 같이 주어진다.

  • 첫 줄에 세 정수 NN, XX, YY (1≤N≤10000, 1≤X,Y≤1000)(1 \le N \le 10000,\ 1 \le X, Y \le 1000): 적 기지의 수와 격자의 크기. 좌표 (x,y)(x, y)는 0≤x<X0 \le x < X이고 0≤y<Y0 \le y < Y일 때에만 격자 위에 있다.
  • 다음 줄에 네 정수 xi yi xr yrx_i\ y_i\ x_r\ y_r: 특공대의 출발 위치 (xi,yi)(x_i, y_i)와 집결지 (xr,yr)(x_r, y_r).
  • 이어지는 NN개의 줄에는 각각 두 정수 x yx\ y가 주어지며, 적 기지 하나의 위치를 나타낸다.

주어지는 모든 좌표는 격자 위에 있으며 서로 다르다.

출력

각 테스트 케이스마다 두 정수를 공백 하나로 구분하여 한 줄에 출력한다. 첫 번째 값은 달성할 수 있는 적 기지로부터의 최대 이격도이고, 두 번째 값은 그 이격도를 달성하는 가장 짧은 경로의 이동 횟수이다.

예제6

  1. 예제 1

    입력
    2
    1 2 2
    0 0 1 1
    0 1
    2 5 6
    0 0 4 0
    2 1
    2 3
    
    예상 출력
    1 2
    2 14
    
  2. 예제 2

    입력
    1
    1 5 5
    0 0 4 4
    2 2
    
    예상 출력
    2 8
    
  3. 예제 3

    입력
    1
    1 3 1
    0 0 2 0
    1 0
    
    예상 출력
    0 2
    
  4. 예제 4

    입력
    1
    2 7 5
    0 2 6 2
    3 1
    3 3
    
    예상 출력
    1 6
    
  5. 예제 5

    입력
    1
    1 4 4
    0 0 3 3
    1 0
    
    예상 출력
    1 6
    
  6. 예제 6

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