RiseOJ는 solved.ac와 제휴 관계가 없습니다. 티어 아이콘 © solved.ac. solved.ac
포럼
R02702

기사의 여행

스페셜 저지 — 출력을 사용자 정의 프로그램으로 검사하므로 여러 정답이 인정될 수 있습니다.
Gold I 골드 I
난이도
2s
시간 제한
256MB
메모리 제한
0
맞았습니다!!
0
제출 수
0.0%
정답률
레이팅

의견: 0

설명

체스의 기사(나이트)는 한 번에 한 방향으로 두 칸, 그와 수직인 방향으로 한 칸 이동한다. 즉 어떤 칸에서 기사가 갈 수 있는 칸은 아래 그림처럼 최대 \(8\)곳이며, 이동 모양이 알파벳 L을 닮았다.

\(N \times M\) 크기의 격자 모양 들판이 있다. 위에서부터 \(i\)번째 행, 왼쪽에서부터 \(j\)번째 열에 있는 칸을 \((i, j)\)로 나타낸다. 한 마리의 기사가 칸 \((r, c)\)에서 출발하여, 나이트 이동만을 사용해 들판의 모든 칸을 정확히 한 번씩 방문하려고 한다. 이렇게 모든 칸을 한 번씩 밟고 지나가는 경로를 열린 나이트 투어라고 부른다.

\((r, c)\)에서 출발하는 열린 나이트 투어가 존재하는지 판별하고, 존재한다면 그러한 경로를 하나 구하는 프로그램을 작성하시오. 같은 칸을 두 번 밟아서는 안 된다.

제약
  • \(1 \le N, M \le 200\)
  • \(1 \le r \le N\), \(1 \le c \le M\)
  • 입력으로 주어지는 모든 값은 정수이다.
입력 형식

첫째 줄에 들판의 행의 수 \(N\)과 열의 수 \(M\)이 공백으로 구분되어 주어진다.

둘째 줄에 기사가 출발하는 칸의 행 번호 \(r\)과 열 번호 \(c\)가 공백으로 구분되어 주어진다.

출력 형식

\((r, c)\)에서 출발하여 모든 칸을 정확히 한 번씩 방문하는 열린 나이트 투어가 존재하면, \(N\)개의 줄에 각 줄마다 \(M\)개의 정수를 공백으로 구분하여 출력한다. \(i\)번째 줄의 \(j\)번째 정수는 기사가 칸 \((i, j)\)몇 번째로 방문하는지를 나타내는 \(1\) 이상 \(N \cdot M\) 이하의 정수여야 한다.

즉, 출발 칸 \((r, c)\)에 적히는 수는 반드시 \(1\)이어야 하고, \(1\)부터 \(N \cdot M\)까지의 각 수가 정확히 한 번씩 나타나야 하며, 수 \(k\)가 적힌 칸과 수 \(k+1\)이 적힌 칸은 서로 나이트 이동으로 오갈 수 있어야 한다.

그러한 경로가 존재하지 않으면 \(-1\)만을 출력한다.

가능한 경로가 여러 개인 경우 그중 아무거나 하나만 출력하면 된다. (스페셜 저지)

서브태스크
서브태스크점수설명

Subtask 1

30점

\(1 \le N, M \le 8\)

Subtask 2

40점

\(1 \le N, M \le 50\)

Subtask 3

30점

추가 제한이 없다.

예제 1
입력
5 5
1 1
출력
1 20 9 14 3
10 15 2 19 24
21 8 23 4 13
16 11 6 25 18
7 22 17 12 5
설명

출발 칸인 \((1, 1)\)\(1\)이 적혀 있고, \(1\)부터 \(25\)까지의 수가 각각 한 번씩 나타난다. 또한 연속한 두 수가 적힌 칸끼리는 항상 나이트 이동으로 이어져 있으므로, 이는 올바른 열린 나이트 투어이다. 이 문제는 스페셜 저지이므로 조건을 만족하는 다른 경로를 출력해도 정답으로 인정된다.

예제 2
입력
3 4
1 1
출력
1 4 7 10
8 11 2 5
3 6 9 12
설명

\(3 \times 4\) 들판의 왼쪽 위 칸에서 출발하는 열린 나이트 투어의 한 예이다. 기사는 \(1 \to 2 \to \cdots \to 12\)의 순서로 모든 칸을 한 번씩 방문한다.

예제 3
입력
4 4
1 1
출력
-1
설명

\(4 \times 4\) 들판에서는 어느 칸에서 출발하더라도 모든 칸을 한 번씩 방문하는 열린 나이트 투어가 존재하지 않는다. 따라서 \(-1\)을 출력한다.

문제 정보

riseoj 작성

출처 Original

평가 및 의견

기사의 여행

개요
출제자 난이도 Gold I 골드 I 의견 0 / 50 공개 집계 (커뮤니티 난이도, 주요 주제, 품질)는 의견이 충분히 모이면 공개됩니다.

Log in to rate problems.

개별 의견

아직 의견이 없습니다. 자격이 된다면 위 양식에서 가장 먼저 평가해 보세요.

풀이 제출

기사의 여행

게스트로 둘러보고 있습니다. 로그인하면 풀이를 제출하고 진행 상황을 확인할 수 있습니다. 로그인하고 제출하기
공개
C++20 Tab 들여쓰기 · Ctrl+/ 주석 토글 · Enter 자동 들여쓰기
1 1 1 0 공백: 4 · UTF-8