#include<iostream>
#include<cstring>
#include<cstdio>
using namespace std;
int flag[ 110 ] [ 110 ] ,row,column;
char grid[ 110 ] [ 110 ] ;
void floodfill( int i, int j) ;
int main( )
{
//Loop variable
int i,j,cnt;
cnt = 0 ;
//Set 'flag' 2D array by zero. to use memset() function you have to include <cstring> or <string.h>
memset ( flag, 0 , sizeof ( flag) ) ;
//Input number of Row and full 2D array
cin >> row>> column;
getchar ( ) ;
for ( i= 0 ; i< row; i++ )
{
for ( j= 0 ; j< column; j++ )
scanf ( "%c" , & grid[ i] [ j] ) ;
getchar ( ) ;
}
//Input end
//Traverse 2D array
for ( i= 0 ; i< row; i++ )
{
for ( j= 0 ; j< column; j++ )
{
if ( grid[ i] [ j] == '.' && flag[ i] [ j] == 0 )
{
cnt++ ;
floodfill( i,j) ;
}
}
}
cout << "Number of colored region is: " << cnt<< endl<< endl;
cout << "New 2D array is:" << endl<< endl;
for ( i= 0 ; i< row; i++ )
{
for ( j= 0 ; j< column; j++ )
{
cout << grid[ i] [ j] ;
}
cout << endl;
}
return 0 ;
}
void floodfill( int i, int j)
{
//Base case
if ( i< 0 || j< 0 || i> row- 1 || j> column- 1 )
return ;
if ( grid[ i] [ j] == '.' && flag[ i] [ j] == 0 )
{
flag[ i] [ j] = 1 ;
grid[ i] [ j] = '+' ;
floodfill( i+ 1 ,j) ;
floodfill( i- 1 ,j) ;
floodfill( i,j+ 1 ) ;
floodfill( i,j- 1 ) ;
floodfill( i+ 1 ,j+ 1 ) ;
floodfill( i+ 1 ,j- 1 ) ;
floodfill( i- 1 ,j+ 1 ) ;
floodfill( i- 1 ,j- 1 ) ;
}
}
I2luY2x1ZGU8aW9zdHJlYW0+CiNpbmNsdWRlPGNzdHJpbmc+CiNpbmNsdWRlPGNzdGRpbz4KCnVzaW5nIG5hbWVzcGFjZSBzdGQ7CgppbnQgZmxhZ1sxMTBdWzExMF0scm93LGNvbHVtbjsKY2hhciBncmlkWzExMF1bMTEwXTsKCnZvaWQgZmxvb2RmaWxsKGludCBpLCBpbnQgaik7CgppbnQgbWFpbigpCnsKICAgIC8vTG9vcCB2YXJpYWJsZQogICAgaW50IGksaixjbnQ7CiAgICBjbnQgPSAwOwogICAgLy9TZXQgJ2ZsYWcnIDJEIGFycmF5IGJ5IHplcm8uIHRvIHVzZSBtZW1zZXQoKSBmdW5jdGlvbiB5b3UgaGF2ZSB0byBpbmNsdWRlIDxjc3RyaW5nPiBvciA8c3RyaW5nLmg+CiAgICBtZW1zZXQoZmxhZywgMCwgc2l6ZW9mKGZsYWcpKTsKCiAgICAvL0lucHV0IG51bWJlciBvZiBSb3cgYW5kIGZ1bGwgMkQgYXJyYXkKICAgIGNpbj4+cm93Pj5jb2x1bW47CiAgICBnZXRjaGFyKCk7CiAgICBmb3IoaT0wOyBpPHJvdzsgaSsrKQogICAgewogICAgICAgIGZvcihqPTA7IGo8Y29sdW1uOyBqKyspCiAgICAgICAgICAgIHNjYW5mKCIlYyIsICZncmlkW2ldW2pdKTsKICAgICAgICBnZXRjaGFyKCk7CiAgICB9CiAgICAvL0lucHV0IGVuZAoKICAgIC8vVHJhdmVyc2UgMkQgYXJyYXkKICAgIGZvcihpPTA7IGk8cm93OyBpKyspCiAgICB7CiAgICAgICAgZm9yKGo9MDsgajxjb2x1bW47IGorKykKICAgICAgICB7CiAgICAgICAgICAgIGlmKGdyaWRbaV1bal09PScuJyAmJiBmbGFnW2ldW2pdPT0wKQogICAgICAgICAgICB7CiAgICAgICAgICAgICAgICBjbnQrKzsKICAgICAgICAgICAgICAgIGZsb29kZmlsbChpLGopOwogICAgICAgICAgICB9CiAgICAgICAgfQogICAgfQoKICAgIGNvdXQ8PCJOdW1iZXIgb2YgY29sb3JlZCByZWdpb24gaXM6ICI8PGNudDw8ZW5kbDw8ZW5kbDsKICAgIGNvdXQ8PCJOZXcgMkQgYXJyYXkgaXM6Ijw8ZW5kbDw8ZW5kbDsKCiAgICBmb3IoaT0wOyBpPHJvdzsgaSsrKQogICAgewogICAgICAgIGZvcihqPTA7IGo8Y29sdW1uOyBqKyspCiAgICAgICAgewogICAgICAgICAgICBjb3V0PDxncmlkW2ldW2pdOwogICAgICAgIH0KICAgICAgICBjb3V0PDxlbmRsOwogICAgfQoKCiAgICByZXR1cm4gMDsKfQoKCnZvaWQgZmxvb2RmaWxsKGludCBpLCBpbnQgaikKewogICAgLy9CYXNlIGNhc2UKICAgIGlmKGk8MCB8fCBqPDAgfHwgaT5yb3ctMSB8fCBqPmNvbHVtbi0xKQogICAgcmV0dXJuOwoKICAgIGlmKGdyaWRbaV1bal09PScuJyAmJiBmbGFnW2ldW2pdPT0wKQogICAgewogICAgICAgIGZsYWdbaV1bal09MTsKICAgICAgICBncmlkW2ldW2pdPScrJzsKCiAgICAgICAgZmxvb2RmaWxsKGkrMSxqKTsKICAgICAgICBmbG9vZGZpbGwoaS0xLGopOwogICAgICAgIGZsb29kZmlsbChpLGorMSk7CiAgICAgICAgZmxvb2RmaWxsKGksai0xKTsKICAgICAgICBmbG9vZGZpbGwoaSsxLGorMSk7CiAgICAgICAgZmxvb2RmaWxsKGkrMSxqLTEpOwogICAgICAgIGZsb29kZmlsbChpLTEsaisxKTsKICAgICAgICBmbG9vZGZpbGwoaS0xLGotMSk7CiAgICB9Cgp9Cg==
stdin
MTIgMjUKQEBAQEBAQEBAQEBAQEBAQEBAQEBAQEBAQApAQEBAQEBAQEBAQEBAQEBAQEBAQEBAQEBACkBAQEBAQCoqKioqKioqKioqKipAQEBAQEAKQEBAQEBAKi4uLi4qICAgICAuLkBAQEBAQApAQEBAQEAqLi4uLiogICAuLi4uQEBAQEBACkAuQEBAQCouLi4uKiAgICAgIC5AQEBAQEAKQEBAQEBAKi4uLi4qKioqKioqKkBALi5AQApAQEBAQEAqLi4uLi4uLi4uLi4qQEBALi4uCkBAQEBAQCouLi4uLi4uLi4uLipAQEAuLkAKQEBAQEBAKioqKioqKioqKioqKkBAQEAuQApAQEBAQEBAQEAuLi4uLkBAQEBAQEBAQEBACkBAQEBAQEBAQC4uLi4uQEBAQEBAQEBAQEA=
12 25
@@@@@@@@@@@@@@@@@@@@@@@@@
@@@@@@@@@@@@@@@@@@@@@@@@@
@@@@@@*************@@@@@@
@@@@@@*....* ..@@@@@@
@@@@@@*....* ....@@@@@@
@.@@@@*....* .@@@@@@
@@@@@@*....********@@..@@
@@@@@@*...........*@@@...
@@@@@@*...........*@@@..@
@@@@@@*************@@@@.@
@@@@@@@@@.....@@@@@@@@@@@
@@@@@@@@@.....@@@@@@@@@@@