VBGRASS - Bãi cỏ ngon nhất
Tác giả: happyboy99x
Ngôn ngữ: C++
#include <cstdio>
#include <utility>
using namespace std;
typedef pair<int, int> ii;
#define fi first
#define se second
int r, c;
char s[105][105];
int dX[] = {-1, 0, 0, 1}, dY[] = {0, -1, 1, 0};
ii q[10005];
int main() {
scanf( "%d%d\n", &r, &c ); int res = 0;
for( int i = 0; i < r; ++i ) gets(s[i]);
for( int i = 0; i < r; ++i ) for( int j = 0; j < c; ++j )
if( s[i][j] == '#' ) {
++res;
s[i][j] = '.'; int l = 0, h = 1; q[0] = ii(i, j);
do {
for( int i = 0; i < 4; ++i ) {
int x = q[l].fi + dX[i], y = q[l].se + dY[i];
if ( x >= 0 && x < r && y >= 0 && y < c && s[x][y] == '#' ){
q[h++] = ii(x, y);
s[x][y] = '.';
}
}
} while( ++l < h );
}
printf( "%d\n", res );
return 0;
}