• Source
    1. #include <iostream>
    2. using namespace std;
    3.  
    4. int chuaxet[10004];
    5. void khoitao ()
    6. {
    7. for (int i=1; i<=10000; i++)
    8. {
    9. chuaxet[i]=1;
    10. }
    11. }
    12.  
    13. char grass[102][102];
    14. int dinh[102][102];
    15. int R, C;
    16. void nhap ()
    17. {
    18. int stt=0;
    19. cin>>R>>C;
    20. for (int i=1; i<=R; i++)
    21. {
    22. for (int j=1; j<=C; j++)
    23. {
    24. cin>>grass[i][j];
    25. stt++;
    26. dinh[i][j]=stt; //khoi tao dinh
    27. }
    28. }
    29. }
    30.  
    31. int xqX[]={0, -1, 0, 1};
    32. int xqY[]={1, 0, -1, 0};
    33. void DFS_RA (int r, int c)
    34. {
    35. for (int i=0; i<4; i++)
    36. {
    37. int X=c+xqX[i];
    38. int Y=r+xqY[i];
    39. if ((X>=1 && X<=C) && (Y>=1 && Y<=R) && chuaxet[dinh[Y][X]]==1 && grass[Y][X]=='#')
    40. {
    41. chuaxet[dinh[Y][X]]=0; //Dinh da duyet
    42. DFS_RA (Y, X);
    43. }
    44. }
    45. }
    46.  
    47. int main ()
    48. {
    49. //IN;
    50. nhap ();
    51. //OUT;
    52. khoitao();
    53. int dem=0;
    54. for (int i=1; i<=R; i++)
    55. {
    56. for (int j=1; j<=C; j++)
    57. {
    58. if (grass[i][j]=='#' && chuaxet[dinh[i][j]]==1)
    59. {
    60. dem++;
    61. chuaxet[dinh[i][j]]=0; //Dinh da duyet
    62. DFS_RA (i, j);
    63. }
    64. }
    65. }
    66. cout<<dem;
    67. return 0;
    68. }