Advertisement
Iamtui1010

mien0.cpp

Dec 2nd, 2022
671
0
Never
Not a member of Pastebin yet? Sign Up, it unlocks many cool features!
C++ 1.04 KB | None | 0 0
  1. #include<iostream>
  2. #include<vector>
  3.  
  4. #define long long long
  5. #define nln '\n'
  6.  
  7. using namespace std;
  8.  
  9. void rc(long r, long c, long n, long m, vector<vector<long>> &a, long cnt)
  10. {
  11.     a[r][c] = cnt;
  12.     for (long i = r-1; i <= r+1; ++i)
  13.         for (long j = c-1; j <= c+1; ++j)
  14.             if (!a[i][j] && (i == r || j == c) && (i != r || j != c))
  15.                 rc(i, j, n, m, a, cnt);
  16. }
  17.  
  18. void showa(long n, long m, const vector<vector<long>> &a)
  19. {
  20.     for (long i = 1; i <= n; ++i){
  21.         for (long j = 1; j <= m; ++j)
  22.             cout << a[i][j] << ' ';
  23.         cout << nln;
  24.     }
  25. }
  26.  
  27. int main()
  28. {
  29.     // Input
  30.     cin.tie(0)->sync_with_stdio(0);
  31.     cout.tie(0)->sync_with_stdio(0);
  32.     long n, m;
  33.     cin >> n >> m;
  34.     vector<vector<long>> a(n+2, vector<long> (m+2, 1));
  35.     for (long i = 1; i <= n; ++i)
  36.         for (long j = 1; j <= m; ++j)
  37.             cin >> a[i][j];
  38.     // Thuật toán tương tự DFS  
  39.     long cnt = 1;
  40.     for (long i = 1; i <= n; ++i)
  41.         for (long j = 1; j <= m; ++j)
  42.             if (!a[i][j])
  43.                 rc(i, j, n, m, a, ++cnt);
  44.     //showa(n, m, a);
  45.     cout << cnt-1 << nln;
  46.     //cout << "DONE" << nln;
  47.     return 0;
  48. }
Advertisement
Add Comment
Please, Sign In to add comment
Advertisement