만드는 중입니다

아직 만드는 중이라 바뀔 수 있습니다

더워!

면접 대비

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

요약
격자에서 실외에서는 불쾌지수가 오르고 실내에서는 내려갈 때, 불쾌지수가 100에 이르지 않게 집 S에서 회의 장소 E까지 가는 최소 시간을 구합니다.
난이도

보통10점 중 5점

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

문제

한여름 날씨가 너무 더워서 민규는 외출은커녕 집에서 에어컨에 의지해 지내고 있다. 오늘은 약속이 있어 어쩔 수 없이 집 밖으로 나가 약속 장소로 가야 한다. 그런데 시원한 집에서 쉬다 보니 어느새 약속 시간에 늦고 말았다. 빨리 집을 나서야 한다!

밖은 NN행 MM열의 격자이다. 격자의 각 칸은 집, 약속 장소, 건물, 벽, 길 중 하나이다. 집과 건물은 실내이고, 길, 벽, 약속 장소는 실외이다.

밖이 너무 더워서 실외에 있으면 불쾌함 BB가 계속 증가한다. 그러나 이동 경로에 있는 실내는 매우 시원해서, 실내를 지나가거나 실내에서 쉬는 동안에는 불쾌함이 줄어든다.

처음에 민규의 불쾌함은 00이다. 불쾌함이 100100이 되면 민규는 견디지 못하고 쓰러진다.

민규는 집에서 출발해 다음 순서로 행동한다. 1번 행동은 이동 여부와 상관없이 11의 시간이 걸리고, 2번과 3번 행동에 드는 시간은 무시할 수 있을 만큼 짧다.

  1. 격자판 안에서 상하좌우로 인접한 칸 중 벽이 아닌 칸으로 이동하거나, 이동하지 않고 가만히 있는다.
  2. 현재 있는 칸에 따라 불쾌함이 증가하거나 감소한다.
    • 현재 칸이 실내라면 불쾌함이 max⁡(0,B−K)\max(0, B-K)까지 줄어든다.
    • 현재 칸이 실외라면 불쾌함이 min⁡(100,B+C)\min(100, B+C)까지 늘어난다.
  3. 약속 장소에 도달하거나 불쾌함이 100100이 되면 행동을 멈춘다. 그렇지 않으면 1번으로 돌아간다.

민규가 쓰러지지 않고 약속 장소에 최대한 빨리 도달할 수 있도록 이동 경로를 계산하는 프로그램을 작성하자. 단, 약속 장소로 이동했는데 불쾌함이 100100이 되면 민규는 쓰러진 것이므로 약속 장소에 도달하지 못한 것으로 본다.

입력

첫 번째 줄에 격자의 크기를 나타내는 정수 NN, MM이 공백으로 구분되어 주어진다.

두 번째 줄에는 실내에서 줄어드는 불쾌함 KK와 실외에서 늘어나는 불쾌함 CC가 공백으로 구분되어 주어진다.

세 번째 줄부터 N+2N+2번째 줄까지 격자의 상태를 나타내는 길이 MM의 문자열이 주어진다. i+2i+2번째 줄의 jj번째 문자는 ii행 jj열 칸의 대상을 나타낸다. 문자가 S이면 민규의 집, E이면 약속 장소, H이면 건물, #이면 벽, .이면 길이다. S와 E는 각각 하나씩 주어진다.

출력

민규가 쓰러지지 않고 약속 장소에 도달할 수 있는 최소 시간을 출력한다. 그런 방법이 없다면 -1을 출력한다.

제한

  • 2≤N,M≤1002 \leq N, M \leq 100
  • 1≤K,C≤1001 \leq K, C \leq 100
  • 0≤B≤1000 \leq B \leq 100
  • 1≤i≤N1 \leq i \leq N
  • 1≤j≤M1 \leq j \leq M
  • i,ji, j와 입력으로 주어지는 모든 수는 정수이다.

예제2

  1. 예제 1

    입력
    3 4
    10 25
    S...
    #.H.
    E...
    
    예상 출력
    8
    
  2. 예제 2

    입력
    3 4
    10 25
    S...
    #..H
    E...
    
    예상 출력
    -1