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

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

로봇

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

요약
벽이 있는 격자에서 로봇이 두 출발 칸 (a,b)와 (c,d) 중 어디에서 시작하든 (0,0)에 도착하도록 700개 이하의 명령을 찾는다.
난이도

보통10점 중 6점

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

문제

n×mn \times m 격자로 표현되는 필드 위에 로봇이 있다. 격자의 일부 칸은 벽이다.

로봇은 up, down, left, right 네 가지 명령을 받는다.

로봇이 현재 좌표 (x,y)(x, y)에 있다고 하자. 각 명령을 실행했을 때의 결과는 다음과 같다.

  • up : x=0x = 0이거나 (x−1,y)(x - 1, y)가 벽이면 로봇은 움직이지 않는다. 그렇지 않으면 로봇은 (x−1,y)(x - 1, y)로 이동한다.
  • down : x=n−1x = n - 1이거나 (x+1,y)(x + 1, y)가 벽이면 로봇은 움직이지 않는다. 그렇지 않으면 로봇은 (x+1,y)(x + 1, y)로 이동한다.
  • left : y=0y = 0이거나 (x,y−1)(x, y - 1)이 벽이면 로봇은 움직이지 않는다. 그렇지 않으면 로봇은 (x,y−1)(x, y - 1)로 이동한다.
  • right: y=m−1y = m - 1이거나 (x,y+1)(x, y + 1)이 벽이면 로봇은 움직이지 않는다. 그렇지 않으면 로봇은 (x,y+1)(x, y + 1)로 이동한다.

로봇의 시작 위치는 (a,b)(a, b) 또는 (c,d)(c, d) 중 하나이다. 로봇이 (a,b)(a, b)에서 출발하든 (c,d)(c, d)에서 출발하든 항상 (0,0)(0, 0)에서 끝나도록 하는, 길이가 qq 이하인 명령열을 찾아라. 문제의 제약을 만족하는 모든 입력에 대해 답이 존재함을 증명할 수 있다.

제한

  • 1≤n≤101 \le n \le 10
  • 1≤m≤101 \le m \le 10
  • 0≤a≤n−10 \le a \le n - 1
  • 0≤b≤m−10 \le b \le m - 1
  • 0≤c≤n−10 \le c \le n - 1
  • 0≤d≤m−10 \le d \le m - 1
  • g[0][0]=g[a][b]=g[c][d]=0g[0][0] = g[a][b] = g[c][d] = 0
  • 로봇을 (a,b)(a, b)에서 (0,0)(0, 0)으로 이동시키는 유한한 명령열이 존재한다
  • 로봇을 (c,d)(c, d)에서 (0,0)(0, 0)으로 이동시키는 유한한 명령열이 존재한다
  • q=700q = 700

예제1

  1. 예제 1

    입력
    1 1
    0
    0 0 0 0
    
    예상 출력
    0