fork download
  1. #include <iostream>
  2. #include <vector>
  3.  
  4. using namespace std;
  5.  
  6. void paint(vector<vector<int> > &a, int i, int j) {
  7. a[i][j] = 2;
  8. if (a[i-1][j] == 1) paint(a, i-1, j);
  9. if (a[i+1][j] == 1) paint(a, i+1, j);
  10. if (a[i][j-1] == 1) paint(a, i, j-1);
  11. if (a[i][j+1] == 1) paint(a, i, j+1);
  12. }
  13.  
  14.  
  15. int task(vector<vector<int> > &a) {
  16. int k = 0;
  17. for (int i = 1; i < a.size() -1; i++) {
  18. for (int j = 1; j < a[i].size() -1; j++) {
  19. if (a[i][j] == 1) {
  20. k ++;
  21. paint(a, i, j);
  22. }
  23. }
  24. }
  25.  
  26. return k;
  27. }
  28.  
  29. int main() {
  30. int m, n;
  31. cin >> m >> n;
  32.  
  33. vector<vector<int> > a (m+2, vector<int> (n+2, 0));
  34. for (int i = 1; i <= m; i++) {
  35. for (int j = 1; j <= n; j++) {
  36. cin >> a[i][j];
  37. }
  38. }
  39.  
  40. int k = task(a);
  41.  
  42. cout << k << endl;
  43.  
  44. return 0;
  45. }
Success #stdin #stdout 0.01s 5288KB
stdin
4 6
1 1 0 0 0 1
1 0 0 0 0 1
1 1 1 0 0 0 
1 1 1 1 1 1
stdout
2