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

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

저택

시간 제한1초메모리 제한256 MB

요약
처음에는 세로 문만 열려 있는 격자에서, 일부 방의 스위치를 1분간 눌러 모든 문의 상태를 뒤집을 수 있을 때 (1,1)에서 (M,N)까지 가는 최소 시간을 구한다.
난이도

보통10점 중 7점

유형
그래프, BFS, 최단 경로, 그리디
정답자
아직 제출이 없습니다

문제

당신은 매우 큰 저택에 갇혔다. 이 저택은 정사각형 방들이 격자 모양으로 배치된 NN행 MM열 구조이다. 왼쪽에서 xx번째(1≤x≤M1 \le x \le M), 아래에서 yy번째(1≤y≤N1 \le y \le N)에 있는 방을 (x,y)(x, y)로 나타낸다.

인접한 두 방 사이에는 모두 문이 하나씩 있으며, 각 문은 열려 있거나 닫혀 있다. 열려 있는 문을 통과해 옆방으로 이동하는 데는 11분이 걸린다. 당신은 열려 있는 문으로만 이동할 수 있고, 문의 개폐 상태를 직접 바꿀 수는 없다.

일부 방의 중앙에는 스위치가 있다. 스위치를 11분 동안 누르고 있으면 저택에 있는 모든 문의 개폐 상태가 반전된다. 즉, 열려 있던 문은 닫히고 닫혀 있던 문은 열린다.

처음에는 위아래로 인접한 방 사이의 문만 열려 있고, 나머지 문은 모두 닫혀 있다.

당신은 지금 (1,1)(1, 1) 방의 중앙에 있으며, (M,N)(M, N) 방의 중앙으로 이동하려고 한다. 이동에 걸리는 가장 빠른 시간을 구하여라.

입력

첫째 줄에 저택의 크기 MM, NN과 스위치가 있는 방의 수 KK가 공백으로 구분되어 주어진다. 둘째 줄부터 KK개의 줄에 스위치가 있는 방의 위치 xix_i, yiy_i가 주어진다. (2≤M,N≤1000002 \le M, N \le 100000, 1≤K≤2000001 \le K \le 200000)

출력

(M,N)(M, N) 방에 도착하는 가장 빠른 시간을 첫째 줄에 출력한다. 도착할 수 없으면 −1-1을 출력한다.

예제3

  1. 예제 1

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

    입력
    3 2 1
    2 1
    
    예상 출력
    -1
    
  3. 예제 3

    입력
    8 9 15
    3 1
    3 2
    3 7
    3 8
    1 1
    4 5
    4 3
    5 6
    5 8
    6 3
    6 2
    7 5
    8 9
    8 6
    8 5
    
    예상 출력
    25