2718 - 船长大会

题目描述

一年一度的船长联谊大会开始了,杰克作为资深老船长负责本次大会的具体工作事宜。

为了让船长们增强沟通,达到联谊的目的,杰克将船长们安排到了一个 N \times M 的矩阵中落座。并在部分没有坐人的位置上,放了一些黄金,船长们对黄金没有任何抵抗力,垂涎欲滴。

杰克宣布大会的第一项活动,每个船长可以从自己的座位,尝试沿着上下左右四个方向移动一步,到相邻的座位(比如:哈里船长坐在 x,y 的位置,那么他可以尝试移动到 x-1,yx+1,yx,y-1x,y+14 的位置,当然哈里船长不能移出矩阵的范围);

如果两位船长在有黄金的位置相遇,那么两位船长可以就本年度的航海活动深入交流,形成两船联盟,当然他们会顺便瓜分座位上的黄金,因此同一个座位上的黄金只能成为一对船长联盟的见证;同一对船长一旦在某个座位瓜分黄金后联盟,则不允许再去瓜分其他座位的黄金,这样可以让更多的船长形成两船联盟的关系。

请编程计算出,根据给定的座位图,最多有多少对船长能够形成两船联盟的关系。

输入

1 行包含 2 个整数 NM,表示矩阵的大小;

接下来 N 行,每行有 M 个字符,表示座位图的具体分布;

在座位图的分布中:字符 C 代表该位置留给某个船长(captain),字符 G 代表该位置放有黄金(gold),字符 . 代表该位置空置,既没有船长落座,也没有黄金。

输出

输出一个整数,代表活动结束后,能够形成两船联盟的船长对数。

样例

输入

3 3
.CG
.GC
.CG

输出

3

输入

3 4
CGC.
GCCG
CCGC

输出

4
说明

样例 1 说明

位于 1,2 点和位于 2,3 点的船长,可以通过位于 1,3 点的黄金结盟;

位于 1,2 点和位于 3,2 点的船长,可以通过位于 2,2 点的黄金结盟;

位于 2,3 点和位于 3,2 点的船长,可以通过位于 3,3 点的黄金结盟;

数据范围

对于 20\% 的数据,N=2,1 \le M \le 1000

对于 100\% 的数据,1 \leq N,M \leq 1000

来源

东方博宜OJ月赛

标签
题目参数
时间限制 1 秒
内存限制 512 MB
提交次数 155
通过人数 40
金币数量 3 枚
难度 提高


上一题 下一题