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

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

Скользкий путь

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

요약
얼음 칸에서 미끄러지는 규칙이 있는 격자에서 A에서 B까지 짐이 파손되지 않는 최단 이동 시간을 구한다.
난이도

보통10점 중 7점

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

문제

Люк Скайуокер ступил на скользкий путь! К счастью, его не влечет Темная сторона. Он всего лишь оказался на планете Хот, целиком покрытой снегом и льдом, потому передвигаться по местности необходимо крайне осторожно. Люку необходимо добраться из точки A в точку B и доставить ценную и хрупкую посылку.

Для простоты будем считать, что местность разбита на квадраты и представляет из себя прямоугольник размером nn на mm. Каждая клетка может быть одного из трех типов: здание, сугроб, либо лед. Перемещаться Люк может только между соседними клетками. Соседними считаются клетки, имеющие общую сторону. Перемещение между любыми двумя клетками занимает ровно одну единицу времени. Каждая клетка имеет свою высоту --- целое число.

Между соседними клетками зданий можно перемещаться без каких-либо ограничений. Также из здания можно переместиться в соседний сугроб. Из сугроба можно попасть в соседнее здание. Из сугроба можно перейти либо в соседний сугроб, либо на соседнюю клетку со льдом, если высота новой клетки не больше изначальной. Из клетки со льдом можно переходить в соседнюю клетку со льдом или сугробом, если высота новой клетки не больше изначальной. Если же Люк переходит из клетки со льдом в клетку со льдом, высота которой строго меньше, то он начинает скользить в том же направлении. Люк останавливает скольжение, если следующей клеткой на его пути встречается сугроб, клетка со льдом, высота которой больше высоты той клетки, в которой он находится, либо край карты. В этом случае Люк снова может идти в любом направлении из той клетки, в которой он остановился. Если же Люк встречает на своем пути стену здания, то он оказывается не в силах остановить движение и разбивает посылку.

Люку необходимо как можно скорее доставить это посылку из точки A в точку B. Помогите ему найти кратчайший путь, при котором его груз уцелеет.

입력

В первой строчке входного файла заданы два числа nn и mm (1≤n,m≤5001 \le n, m \le 500) --- размеры карты. Во второй строке находятся два числа a_ra\_r, a_ca\_c (1≤a_r≤n,1≤a_c≤m1 \le a\_r \le n, 1 \le a\_c \le m) --- номер строки и номер столбца, в которых находится точка A. В третьей строке находятся два числа b_rb\_r, b_cb\_c --- описание точки B в том же формате. В каждой из следующих nn строчек находится mm символов. Если соответствующий символ равен BB, то в этой клетке находится здание, SS --- сугроб и II --- лед. В следующих nn строчках находится описание рельефа местности. В каждой из этих строчек --- по nn целых чисел --- высота соответствующей клетки на карте. Высота каждой точки --- целое число h_ijh\_{ij} (0≤h_ij≤1090 \le h\_{ij} \le 10^9).

Гарантируется, что точки A и B находятся в зданиях.

출력

В выходной файл выведите длину кратчайшего пути из A в B, либо <<Impossible>>, если пути не существует.

예제1

  1. 예제 1

    입력
    3 5
    1 1
    3 5
    BISSS
    SIIIS
    SSSIB
    10 10 5 5 5
    10 10 5 3 1
    10 10 5 5 1
    
    예상 출력
    6