#P14814. [ICPC 2023 Yokohama R] Yokohama Phenomena

    ID: 14731 远端评测题 2000ms 2048MiB 尝试: 0 已通过: 0 难度: 3 上传者: 标签>2023深度优先搜索 DFSICPC横浜

[ICPC 2023 Yokohama R] Yokohama Phenomena

Description

你听说过横滨现象吗?这种现象发生在三位程序员围坐在一张桌子旁,共同握着一支笔悬在一块木板上方时。木板上画着一个方格网格,每个方格标有一个字母。尽管没有任何参与者有意移动这支笔,但它的笔尖仿佛有自己的意志,会落到其中一个标有 Y 的方格上,然后开始在木板上移动。经过的方格按顺序标有 O、K、O、H、A 和 M,然后笔尖停在标有 A 的方格上。

让我们将笔尖沿着这样的轨迹经过的方格序列称为一个 YOKOHAMA 轨迹。YOKOHAMA 轨迹定义如下:

  • 它是给定方格网格中由八个方格组成的序列。
  • 该序列中除第一个方格外的每个方格,都与其序列中的直接前一个方格共享一条边(即边相邻)。
  • 序列中八个方格所标的字母按顺序为 Y、O、K、O、H、A、M 和 A。

注意,同一个方格可能在序列中出现多次。

图 A.1 (a) 展示了对应于样例输入 1 的木板的示意图。图 A.1 (b) 和 (c) 显示了两个 YOKOHAMA 轨迹上的路径。两个轨迹都起始于最上一行的最左边方格。在图 A.1 (c) 所示的轨迹中,标有 O 的同一个方格出现了两次。

:::align{center}

图 A.1. 一个木板及两个 YOKOHAMA 轨迹上的路径 :::

你被给予一个方格网格,每个方格标有六个字母 A、H、K、M、O 或 Y 中的一个。你的任务是计算在该网格上有多少种不同的 YOKOHAMA 轨迹。

Input Format

输入包含一个单独的测试用例,格式如下。

$$\begin{aligned} &n\ m \\ &x_{1,1}\ \cdots\ x_{1,m} \\ &\vdots \\ &x_{n,1}\ \cdots\ x_{n,m} \end{aligned}$$

前两个整数 nnmm (1n101 \le n \le 10, 1m101 \le m \le 10) 描述了网格的大小。网格中的方格排列成一个 n×mn \times m 的矩阵。接下来的 nn 行描述了方格中所标的字母。网格中第 ii 行第 jj 列的方格 (1in1 \le i \le n, 1jm1 \le j \le m) 标有字母 xi,jx_{i,j}。每个 xi,jx_{i,j} 是六个字母 A、H、K、M、O 或 Y 中的一个。

Output Format

输出一行,包含不同的 YOKOHAMA 轨迹的数量。

2 4
YOHA
OKAM
8
3 4
YOKH
OKHA
KHAM
0
3 6
MAYOHA
AHOKAM
MAYOHA
80

Hint

翻译由 DeepSeek V3 完成