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

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

Древний замок

면접 대비

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

요약
n x m 격자에서 주어진 순서대로 k개 돌에 인접한 칸을 차례로 방문한 뒤 도착 칸에 이르는 최단 시간을 구한다.
난이도

보통10점 중 6점

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

문제

Кэл Кестис обнаружил древний храм Силы. Вход в храм находится в прямоугольной пещере. Чтобы попасть в храм, нужно открыть рунический замок, которым запечатан вход.

Пещера, в которой находится вход в храм, имеет размеры n×mn \times m метров, и поделена на квадраты размера 1×11 \times 1 метр. Представим пещеру в виде таблицы n×mn \times m, строки которой пронумерованы от 11 до nn сверху вниз, а столбцы --- от 11 до mm слева направо. В некоторых квадратах находятся рунические камни, а остальные квадраты свободны. Кэл может перемещаться только по свободным квадратам. За единицу времени он может переместиться из квадрата в соседний по стороне.

Сейчас Кэл находится в некотором квадрате пещеры. Чтобы открыть вход в храм, нужно в правильном порядке коснуться нескольких рунических камней. После чего, Кэл должен дойти до квадрата, в котором откроется вход в храм. Чтобы коснуться рунического камня, расположенного в некотором квадрате, Кэл должен встать в квадрате, соседнем по стороне. На то, чтобы коснуться камня, Кэл не тратит дополнительного времени.

За Кэлом гонятся инквизиторы Империи, и он хочет узнать, за какое минимальное время можно открыть замок и войти в храм. Помогите ему узнать эту величину.

입력

В первой строке даны три целых числа nn, mm и kk --- размеры пещеры и длина последовательности камней, до которых Кэл должен дотронуться (1≤n,m≤1001 \le n, m \le 100; 0≤k≤1000 \le k \le 100).

В следующих nn строках дано по mm символов --- описание пещеры. Символ <<\#>> соответствует непроходимой клетке, содержащей камень. Все остальные клетки свободны. Символ <<S>> соответствует квадрату, в котором Кэл находится изначально. А символ <<F>> соответствует квадрату, в котором откроется вход в храм. Кэл должен будет прийти в него после того, как откроет замок. Все остальные символы равны <<.>>. Гарантируется, что символы <<S>> и <<F>> встречаются ровно по одному разу.

В следующих kk строках даны по два целых числа x_ix\_i и y_iy\_i --- номер строки и столбца, на пересечении которых находится ii-й камень, которого Кэл должен коснуться. Гарантируется, что квадрат на пересечении строки номер x_ix\_i и столбца номер y_iy\_i содержит камень для всех ii от 11 до kk.

출력

Если Кэл не сможет открыть замок и войти в храм, выведите число −1-1. Иначе, выведите минимальное время, необходимое, чтобы открыть замок и дойти до входа в храм.

힌트

В первом примере, Кэл сначала должен дойти до квадрата (1,2)(1, 2) за 88 шагов. Коснуться камня (1,1)(1, 1). Перейти в соседний справа квадрат. Коснуться камня (2,3)(2, 3). Затем, дойти до квадрата (3,2)(3, 2) за 77 шагов. Коснуться камня (2,2)(2, 2). Перейти в соседний слева квадрат. После чего, его маршрут закончится. Суммарно он потратит 8+1+7+1=178 + 1 + 7 + 1 = 17 единиц времени.

예제3

  1. 예제 1

    입력
    3 5 3
    #....
    ####.
    FS...
    1 1
    2 3
    2 2
    
    예상 출력
    17
    
  2. 예제 2

    입력
    3 5 1
    #....
    #####
    FS...
    1 1
    
    예상 출력
    -1
    
  3. 예제 3

    입력
    3 5 0
    F#...
    .#.#.
    ...#S
    
    예상 출력
    10