도망자
면접 대비시간 제한1초메모리 제한128 MB
경로, 문, 벽, 입구 하나로 이루어진 작은 격자 미로에서, 문 하나만 잠가 시작 칸에서 입구로 가는 길을 끊을 수 있는 모든 문을 찾는다.
문제
한 남자가 감옥에서 탈출했습니다. 경찰을 피하려고 그는 정사각형 미로 안으로 도망쳐 들어갑니다. 미로는 통로, 문, 벽으로 이루어져 있습니다. 각 문은 둘 이상의 통로를 연결합니다. 미로에는 테두리에 위치한 단 하나의 입구가 있으며, 이 입구는 유일한 출구이기도 합니다.
경찰은 원격 조종 장치로 입구를 제외한 미로 안의 문 중 하나를 잠글 수 있습니다. 잠긴 문은 벽처럼 지나갈 수 없게 됩니다. 처음에는 모든 문이 열려 있습니다. 도망자의 현재 위치는 알려져 있으며 항상 통로 칸입니다. 도망자는 한 번에 한 칸씩 상하좌우 네 방향으로만 이동할 수 있고, 대각선 이동은 허용되지 않습니다. 그는 벽이나 잠긴 문 위에는 절대 있을 수 없습니다. 도망자는 입구 칸에 도달할 수 있을 때에만 탈출에 성공합니다.
입구가 아닌 문을 정확히 하나만 잠가서 도망자를 미로 안에 영원히 가둘 수 있는지 판단하고, 가능하다면 그 문 하나만 잠가도 도망자가 탈출할 수 없게 되는 모든 문을 찾아 경찰을 도와주세요. 미로의 크기는 최대 칸입니다.
입력
입력은 표준 입력으로 주어집니다.
- 첫 번째 줄에는 미로의 한 변의 칸 수를 나타내는 양의 정수 ()이 주어집니다.
- 두 번째 줄에는 도망자의 위치를 나타내는 두 정수가 공백으로 구분되어 주어집니다. 좌표는 1부터 시작하며 왼쪽 아래 모서리가 입니다. 첫 번째 수는 가로 좌표(왼쪽에서 오른쪽), 두 번째 수는 세로 좌표(아래에서 위)입니다.
- 그다음 개의 줄에는 미로의 각 행이 맨 위 행부터 맨 아래 행까지 차례로 주어집니다. 각 줄의 개 칸 기호는 공백 하나로 구분됩니다. 기호는 다음과 같습니다:
D는 문,E는 입구/출구,P는 통로,W는 누구도 지나갈 수 없는 벽입니다.
도망자는 항상 P 칸 위에 있으며, 테두리에 정확히 하나의 E 칸이 있습니다.
출력
표준 출력으로 다음을 출력합니다.
- 첫 번째 줄에는 문 하나를 잠가서 도망자를 가둘 수 있으면
YES, 그렇지 않으면NO를 출력합니다. - 답이
YES이면 두 번째 줄에 조건을 만족하는 문의 개수(그 문 하나만 잠가도 도망자가 입구에 도달할 수 없게 되는 문의 수)를 정수로 출력합니다. - 이어서 해당하는 문들을 한 줄에 하나씩, 가로 좌표와 세로 좌표를 공백으로 구분하여 출력합니다. 문은 가로 좌표 오름차순으로 정렬하고, 가로 좌표가 같으면 세로 좌표 오름차순으로 정렬합니다.