AT_agc028_f [AGC028F] Reachable Cells

题目描述

有一个由 $N$ 行 $N$ 列的格子组成的棋盘。从上往下第 $i$ 行,从左往右第 $j$ 列的格子记作 $(i,j)$。每个格子要么是空的,要么放有障碍物。所有空格子上都写有一个数字。当 $A_{i,j}=$ `1`, `2`, ... `9` 时,表示格子 $(i,j)$ 是空的,且上面写着数字 $A_{i,j}$。当 $A_{i,j}=$ `#` 时,表示格子 $(i,j)$ 上有障碍物。 若满足以下所有条件,则称可以从格子 $X$ 到达格子 $Y$: - 格子 $X$ 和 $Y$ 不同。 - 格子 $X$ 和 $Y$ 都是空格子。 - 从 $X$ 出发,每次只能向右或向下移动到相邻的空格子,最终可以到达 $Y$。 请你对于所有可以从 $X$ 到 $Y$ 的格子对 $(X,Y)$,计算 $X$ 上的数字与 $Y$ 上的数字的乘积,并求这些乘积的总和。

输入格式

输入从标准输入读入,格式如下: > $N$ > $A_{1,1}A_{1,2}\ldots A_{1,N}$ > $A_{2,1}A_{2,2}\ldots A_{2,N}$ > $\vdots$ > $A_{N,1}A_{N,2}\ldots A_{N,N}$

输出格式

请输出所有可以从 $X$ 到 $Y$ 的格子对 $(X,Y)$,$X$ 上的数字与 $Y$ 上的数字的乘积之和。

说明/提示

### 数据范围 - $1 \leq N \leq 500$ - $A_{i,j}$ 只会是 `1`, `2`, ... `9`, `#` 这几种字符之一。 ### 样例解释 1 可以从 $X$ 到 $Y$ 的格子对 $(X,Y)$ 有如下 $5$ 种情况: - $X=(1,1)$, $Y=(1,2)$ - $X=(1,1)$, $Y=(2,1)$ - $X=(1,1)$, $Y=(2,2)$ - $X=(1,2)$, $Y=(2,2)$ - $X=(2,1)$, $Y=(2,2)$ 对于每一组,$X$ 和 $Y$ 上的数字乘积都是 $1$,所以答案是 $5$。 由 ChatGPT 4.1 翻译