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;
}

Download