N *土地のmは、各点が「W」である雨のビデオを含む、「」フリー雨を表し、各点考え通信周りの8点、
前記全て池、総数取得池を構成する接続
n∈[1,1000]
m∈[1,1000]
#説明
すべての点の数は、DFSスタックを破裂するように、BFSと便利でスキップして他の国境を越えた操作でき、1E6有します
1の#include <ビット/ STDC ++ H> 2 の#define PII対<整数、整数> 3 の#define X第 4 の#define第2のY 5 使って 名前空間STDを、 6 CONST INT N = 1E3 + 10 。 7 チャーG [N]、[N]。 8 ブール値ST [N] [N]。 9 整数N、M。 10の ボイド BFS(INT SX、INT SY){ 11 キュー<PII> Q。 12 q.push({SX、SY})。 13 ST [SX] [SY] = 真; 14 15 ながら(q.size()){ 16 PII T = q.front()。 17 q.pop()。 18 のために(INT I = TX- 1 ; I <= t.x + 1 ; I ++ ) 19 のための(INT J = ty- 1 ; J <= t.y + 1、J ++ ){ 20 であれば(私は== TX && J == TY)続けます。 21 もし(I < 0 || I> = N || J < 0 || J> = M)続けます。 22 であれば(G [I] [J] == '。")続けます。 23 もし(ST [i] [j]は)継続; 24 q.push({I、J})。 25 ST [i]は[J] = 真; 26 } 27 } 28 } 29 INT メイン(){ 30の IOS :: sync_with_stdio(0 )。 31 cin.tie(0 )。 32 CIN >> N >> M。 33 のために(INT iが= 0 ; iが<N; I ++ ) 34 CIN >>G [i]は、 35 INT CNT = 0 。 36 のために(INTは iは= 0 ; I <N I ++ ) 37 のための(INT J = 0 ; J <mであり、j ++ ){ 38の 場合(G [i]は[J] == ' W '!&& ST [I] [J]){ 39の BFS(i、j)は、 40 CNT ++ ; 41 } 42 } 43 COUT << CNT << ENDL。 44 }