AT_agc028_f2 [AGC028F2] 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)$,将 $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 1500$ - $A_{i,j}$ 是 `1`、`2`、...、`9` 或 `#` 之一。 ### 样例解释 1 满足“可以从格子 $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 翻译