1 #include<iostream>
2 #include<stdio.h>
3 #define MAXN 105
4 using namespace std;
5
6 char _m[MAXN][MAXN];
7 bool mark[MAXN][MAXN];
8 int r;
9 int c;
10 void is_connect(int i,int j);
11 int main()
12 {
13 //freopen("acm.acm","r",stdin);
14 int i;
15 int j;
16 int num = 0;
17 cin>>r>>c;
18 for(i = 0; i < r; ++ i)
19 {
20 for(j = 0; j < c; ++ j)
21 {
22 cin>>_m[i][j];
23 }
24 }
25
26 //for(i = 0; i < r; ++ i)
27 //{
28 // for(j = 0; j < c; ++ j)
29 // cout<<_m[i][j];
30 // cout<<endl;
31 //}
32
33 for(i = 0; i < MAXN; ++ i)
34 {
35 for(j = 0; j < MAXN; ++ j)
36 {
37
38 if(_m[i][j] == 'W' && !mark[i][j])
39 {
40 ++ num;
41 mark[i][j] = true;
42 is_connect(i,j);
43 }
44 }
45 }
46 cout<<num<<endl;
47
48 }
49
50 void is_connect(int i,int j)
51 {
52 if(i > 0 && !mark[i-1][j] && _m[i-1][j] == 'W')
53 {
54 mark[i-1][j] = true;
55 is_connect(i-1,j);
56 }
57 if(i < r-1 && !mark[i+1][j] && _m[i+1][j] == 'W')
58 {
59 mark[i+1][j] = true;
60 is_connect(i+1,j);
61 }
62 if(j > 0 && !mark[i][j-1] && _m[i][j-1] == 'W')
63 {
64 mark[i][j-1] = true;
65 is_connect(i,j-1);
66 }
67 if(j < c-1 && !mark[i][j+1] && _m[i][j+1] == 'W')
68 {
69 mark[i][j+1] = true;
70 is_connect(i,j+1);
71 }
72 if(i > 0 && j > 0 && !mark[i-1][j-1] && _m[i-1][j-1] == 'W')
73 {
74 mark[i-1][j-1] = true;
75 is_connect(i-1,j-1);
76 }
77 if(i > 0 && j < c-1 && !mark[i-1][j+1] && _m[i-1][j+1] == 'W')
78 {
79 mark[i-1][j+1] = true;
80 is_connect(i-1,j+1);
81 }
82 if(i < r-1 && j > 0 && !mark[i+1][j-1] && _m[i+1][j-1] == 'W')
83 {
84 mark[i+1][j-1] = true;
85 is_connect(i+1,j-1);
86 }
87 if(i < r-1 && j < c-1 && !mark[i+1][j+1] && _m[i+1][j+1] == 'W')
88 {
89 mark[i+1][j+1] = true;
90 is_connect(i+1,j+1);
91 }
92 }