Advertisement
add1ctus

Floodfill

Jan 14th, 2017
117
0
Never
Not a member of Pastebin yet? Sign Up, it unlocks many cool features!
C++ 0.96 KB | None | 0 0
  1. #include <cstdio>
  2.  
  3. using namespace std;
  4.  
  5. char mapa[100][100];
  6. bool visited[100][100];
  7. int n, m;
  8.  
  9. void dfs(int x, int y)
  10. {
  11.     visited[x][y] = true;
  12.     if(x - 1 >= 0 && mapa[x-1][y] == '+' && visited[x-1][y] == false)
  13.         dfs(x-1, y);
  14.     if(x + 1 < n && mapa[x+1][y] == '+' && visited[x+1][y] == false)
  15.         dfs(x+1, y);
  16.     if(y - 1 >= 0 && mapa[x][y-1] == '+' && visited[x][y-1] == false)
  17.         dfs(x, y-1);
  18.     if(y + 1 < m && mapa[x][y+1] == '+' && visited[x][y+1] == false)
  19.         dfs(x, y+1);
  20. }
  21.  
  22. int main()
  23. {
  24.     scanf("%d%d", &n, &m);
  25.     for(int i = 0 ; i < n ; ++i)
  26.         for(int j = 0 ; j < m ; ++j)
  27.             scanf(" %c", &mapa[i][j]);
  28.  
  29.     int bazeni = 0;
  30.  
  31.     for(int i = 0 ; i < n ; ++i)
  32.         for(int j = 0 ; j < m ; ++j)
  33.             if(mapa[i][j] == '+' && visited[i][j] == false)
  34.             {
  35.                 dfs(i, j);
  36.                 ++bazeni;
  37.             }
  38.  
  39.     printf("%d", bazeni);
  40.  
  41.     return 0;
  42. }
Advertisement
Add Comment
Please, Sign In to add comment
Advertisement