#P14714. [ICPC 2023 Tehran R] Rolling-Dice Puzzle

[ICPC 2023 Tehran R] Rolling-Dice Puzzle

Description

:::align{center} :::

Sarina 和她的兄弟 Soroush 正在玩掷骰子游戏。游戏在一个 n×mn \times m 的棋盘上进行。初始时,Soroush 将一个标准骰子放在棋盘的一个格子中。放置方式是:数字 66 朝上,数字 44 朝北(上),数字 22 朝西(左)。在标准骰子中,6611 相对,2255 相对,3344 相对。此外,他选择了一些格子并在其中任意写入了 1166 之间的整数。

之后,Sarina 需要通过多次滚动骰子在棋盘上移动它。滚动的定义如下:假设两个相邻的格子 AABB 共享一条边 ee,且骰子位于格子 AA 上;骰子可以围绕其与 ee 相接的边滚动,从而从 AA 移动到 BB。例如,考虑骰子的起始位置。如果骰子围绕东、西、北、南边滚动,滚动后朝上一面的数字将分别为 22553344

每当 Sarina 将骰子移动到一个写有数字的格子,且骰子朝上一面的数字与该格子中的数字匹配时,她将获得一分。注意,Sarina 每个格子最多只能获得一分。游戏并不那么简单!一些格子中有障碍物,无法将骰子移动到有障碍物的格子中。你的任务是找出 Sarina 可以获得的最大分数。

Input Format

输入的第一行包含两个整数 nnmm (1n,m1001 \leq n, m \leq 100),分别表示棋盘的行数和列数。接下来的 nn 行每行包含 mm 个字符,描述棋盘。空单元格用 "." 表示,障碍物用 "x" 表示。骰子的起始位置用 "s" 表示,被选中的单元格用其中写入的整数(1166)表示。保证输入中只有一个 "s"。

Output Format

输出一行,包含 Sarina 可以获得的最大分数。

3 4
.23s
4.2x
xx.1
5
2 2
4s
22
1

Hint

翻译由 DeepSeek V3 完成