Advertisement
Guest User

Untitled

a guest
Apr 4th, 2020
209
0
Never
Not a member of Pastebin yet? Sign Up, it unlocks many cool features!
C++ 1.08 KB | None | 0 0
  1. #include <iostream>
  2. #include <fstream>
  3. using namespace std;
  4.  
  5. ifstream fin("fill.in");
  6. ofstream fout("fill.out");
  7.  
  8. int n,m, a[102][102];
  9.  
  10. const int dx[]={0 , 0 , 1 , -1}, dy[]={1 , -1 , 0 , 0};
  11.  
  12. void fill(int i , int j , int valoare)
  13. {
  14.     a[i][j] = valoare;
  15.     for(int k = 0 ; k < 4 ; k ++)
  16.         if(a[i+dx[k]][j+dy[k]] == -1)
  17.             fill(i+dx[k] , j+dy[k] , valoare);
  18. }
  19.  
  20. int main(){
  21.     fin >> n >> m;
  22.     for(int i = 1 ; i <= n ; i ++)
  23.         for(int j = 1 ; j <= m ; j ++)
  24.             fin >> a[i][j] , a[i][j] = - a[i][j];
  25.     fin.close();
  26.     //bordare , chiar daca este inutila pentru aceasta problema
  27.     for(int i = 0 ; i <= n + 1 ; i ++)
  28.         a[i][0] = a[i][m+1] = 0;
  29.     for(int j = 0 ; j <= m + 1; j ++)
  30.         a[0][j] = a[n+1][j] = 0;
  31.     //cautam valorile -1, le numaram si facem fill
  32.     int cnt = 0;
  33.     for(int i = 1 ; i <= n ; i ++)
  34.         for(int j = 1 ; j <= m ; j ++)
  35.             if(a[i][j] == -1)
  36.             {
  37.                 cnt ++;
  38.                 fill(i , j , cnt);
  39.             }
  40.     fout << cnt ;
  41.     fout.close();
  42.     return 0;
  43. }
Advertisement
Add Comment
Please, Sign In to add comment
Advertisement