#include int h, w; int n; char data[102][102]; void printstring( char c) { if( c == 'E') printf( "Elm" ); else if( c == 'B' ) printf( "Birch" ); else if( c == 'F' ) printf( "Fir" ); else if( c == 'M' ) printf( "Maple" ); else if( c == 'C' ) printf( "Chestnut" ); else if( c == 'O' ) printf( "Oak" ); } int clearing[102][102]; void close( int i, int j, int clearnum ) { /*printf( "in close: %d, %d\n", i, j );*/ if( i < 0 || i >= h || j < 0 || j >= w ) {return;} if( data[i][j] != '-' || clearing[i][j] > 0) {return;} else { clearing[i][j] = clearnum; close( i, j+1,clearnum); close( i, j-1,clearnum); close( i-1, j,clearnum); close( i+1, j,clearnum); } } void process() { int i, j, k; int clear = 0; for( i = 0; i < 102; i++ ) for( j = 0; j < 102; j++ ) { clearing[i][j] = 0; } for( i = 0; i < h; i++ ) { for( j = 0; j < w; j++ ) { if( data[i][j] == '-' && clearing[i][j] == 0 ) { /*printf( "calling close: %d, %d\n", i , j);*/ close(i, j, clear+1); clear++; } } } printf( "There are %d clearings.\n" , clear ); } void readfile() { int i, j, k; scanf( " %d", &n ); for( i = 0; i < n; i++ ) { printf( "Data set %d: ", i+1 ); scanf( " %d %d", &h, &w ); for( j = 0; j < h; j++ ) { scanf( "%s", data[j] ); } process(); } } void main() { readfile(); }