#aising2019c. [aising2019_c]Alternating Path

[aising2019_c]Alternating Path

题目描述

有一个 HHWW 列的网格,每个方块都被涂成黑色或白色。

给定 HH 个字符串 S1,S2,...,SHS_1, S_2, ..., S_H,每个字符串的长度为 WW。如果从上往下数的第 ii 行、从左往右数的第 jj 列的方块被涂成黑色,则字符串 SiS_i 的第 jj 个字符为 #;如果方块被涂成白色,则字符串 SiS_i 的第 jj 个字符为 .

找到满足以下条件的一对黑色方块 c1c_1 和白色方块 c2c_2 的数量:

  • 从方块 c1c_1 到方块 c2c_2 存在一条路径,我们可以通过交替移动到垂直或水平相邻的方块来达到,即黑色、白色、黑色、白色...

约束条件

  • 1H,W4001 \leq H, W \leq 400
  • Si=W|S_i| = W (1iH1 \leq i \leq H)
  • 对于每个 ii (1iH1 \leq i \leq H),字符串 SiS_i 由字符 #. 组成。

输入

输入以以下格式从标准输入给出:

HH WW
S1S_1
S2S_2
:
SHS_H

输出

打印出答案。

示例输入1

3 3
.#.
..#
#..

示例输出1

10

满足条件的一对方块有 ((1,2),(3,3))((1, 2), (3, 3))((3,1),(3,2))((3, 1), (3, 2)),其中 (i,j)(i, j) 表示从上往下数的第 ii 行、从左往右数的第 jj 列方块。

示例输入2

2 4
....
....

示例输出2

0

示例输入3

4 3
###
###
...
###

示例输出3

6