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

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

Стрелочник

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

요약
화살표가 매초 45도씩 회전하는 격자에서, 화살표 칸에 들어서면 그 순간 화살표가 가리키는 칸으로 순간이동하며 시작점에서 도착점까지 가는 최소 시간을 구한다.
난이도

보통10점 중 6점

유형
BFS, 그래프, 시뮬레이션, 최단 경로
정답자
아직 제출이 없습니다

문제

Загулявшись поздно Хэллоуинской ночью, вы и сами не заметили, как попали в ловушку к демону-стрелочнику. Было бы здорово выбраться из нее до рассвета, а иначе у вас будут все шансы остаться в ней навсегда (ну или как минимум до следующего Хэллоуина).

Ловушка представляет из себя матрицу размера n×mn \times m. Некоторые клетки матрицы пусты, а в некоторых нарисованы стрелочки в соседние по стороне или углу клетки. Каждую секунду все стрелочки поворачиваются на 45∘45^\circ градусов по часовой стрелке.

Обозначим направление вверх как 00, вправо-вверх как 11 и так далее, пустую клетку обозначим точкой. Вы находитесь в клетке с координатами (a_x,a_y)(a\_x, a\_y), и,

  • находясь в пустой клетке, можете либо секунду подождать в ней, либо за секунду переместиться в соседнюю по стороне клетку;
  • попадая на клетку со стрелочкой, вы моментально (за 00 секунд) переноситесь туда, куда она указывает.

Когда вы переходите на клетку со стрелкой, она уже успевает повернуться за ту секунду, что вы шагали. Ваша задача --- выбраться из ловушки как можно скорее. Попадите из стартовой точки (a_x,a_y)(a\_x, a\_y) в конечную (b_x,b_y)(b\_x, b\_y) за минимальное количество секунд, либо определите, что это невозможно, и смиритесь с тем, что вам не выбраться.

입력

В первой строке через пробел даны два целых числа nn и mm --- размеры ловушки (1⩽n,m⩽10001 \leqslant n, m \leqslant 1000).

Во второй строке даны два целых числа a_xa\_x и a_ya\_y --- координаты стартовой клетки (1⩽a_x⩽n1 \leqslant a\_x \leqslant n; 1⩽a_y⩽m1 \leqslant a\_y \leqslant m).

В третьей строке так же даны два целых числа b_xb\_x и b_yb\_y --- координаты конечной клетки (1⩽b_x⩽n1 \leqslant b\_x \leqslant n, 1⩽b_y⩽m1 \leqslant b\_y \leqslant m).

Далее следуют nn строк по mm символов --- описание матрицы. Гарантируется, что ни в стартовой, ни в конечной точке нет стрелочек.

출력

В качестве ответа выведите минимальное время, необходимое, чтобы добраться из (a_x,a_y)(a\_x, a\_y) в (b_x,b_y)(b\_x, b\_y), либо −1-1, если это невозможно.

예제4

  1. 예제 1

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

    입력
    1 5
    1 1
    1 5
    .007.
    
    예상 출력
    -1
    
  3. 예제 3

    입력
    3 3
    1 1
    3 3
    .05
    655
    01.
    
    예상 출력
    -1
    
  4. 예제 4

    입력
    3 3
    1 1
    3 3
    .12
    345
    67.
    
    예상 출력
    7