fork download
  1. #include <iostream>
  2. #include <vector>
  3. using namespace std;
  4.  
  5. int rows[]={-1,0,1,0};
  6. int cols[]={0,1,0,-1};
  7.  
  8. char grid[1001][1001];
  9. int visited[1001][1001];
  10.  
  11. bool isValid(int x,int y,int n,int m)
  12. {
  13. return x>=0 && y>=0 && x<n && y<m;
  14. }
  15.  
  16. void BFS(int n,int m,int i,int j)
  17. {
  18. visited[i][j]=1;
  19.  
  20. for(int p=0;p<4;p++)
  21. {
  22. int X = i+rows[p];
  23. int Y = j+cols[p];
  24.  
  25. if(isValid(X,Y,n,m) && grid[X][Y] == '.' && visited[X][Y] == 0)
  26. {
  27. BFS(n,m,X,Y);
  28. }
  29. }
  30.  
  31. }
  32.  
  33.  
  34. int main() {
  35.  
  36. int n,m;
  37. cin>>n>>m;
  38.  
  39. for(int i=0;i<n;i++)
  40. {
  41. for(int j=0;j<m;j++)
  42. {
  43. cin>>grid[i][j];
  44. visited[i][j]=0;
  45. }
  46. }
  47.  
  48. int count1=0;
  49. for(int i=0;i<n;i++)
  50. {
  51. for(int j=0;j<m;j++)
  52. {
  53. if(grid[i][j] != '#' && visited[i][j] == 0)
  54. {
  55. BFS(n,m,i,j);
  56. count1++;
  57. }
  58. }
  59. }
  60.  
  61. cout<<count1<<endl;
  62.  
  63. return 0;
  64. }
Success #stdin #stdout 0s 5724KB
stdin
5 8
########
#..#...#
####.#.#
#..#...#
########
stdout
3