Advertisement
nq1s788

dfs на поле

Mar 22nd, 2025
244
0
Never
Not a member of Pastebin yet? Sign Up, it unlocks many cool features!
C++ 1.10 KB | None | 0 0
  1. ////https://informatics.msk.ru/mod/statements/view.php?id=256&chapterid=652#1
  2. #include <iostream>
  3. #include <set>
  4. #include <vector>
  5. #include <deque>
  6.  
  7. #define se second
  8. #define fi first
  9. #define mp make_pair
  10. #define pb push_back
  11.  
  12. using namespace std;
  13.  
  14. int n, m;
  15. vector <string> g;
  16. vector<vector<bool>> used;
  17.  
  18. vector<pair<int, int>> nei = {{-1, 0}, {0, 1}, {1, 0}, {0, -1}};
  19.  
  20. bool valid(int x, int y) {
  21.     return (0 <= min(x, y) && x < n && y < m && g[x][y] != '.');
  22. }
  23.  
  24. void dfs(pair<int, int> h) {
  25.     used[h.fi][h.se] = true;
  26.     for (auto e : nei) {
  27.         int x = h.fi + e.fi;
  28.         int y = h.se + e.se;
  29.         if (valid(x, y) && !used[x][y]){
  30.             dfs({x, y});
  31.         }
  32.     }
  33. }
  34.  
  35. int main() {
  36.     cin >> n >> m;
  37.     g.resize(n);
  38.     for (auto& e : g) cin >> e;
  39.     used.assign(n, vector<bool>(m, false));
  40.     int answ = 0;
  41.     for (int i = 0; i < n; i++) {
  42.         for (int j = 0; j < m; j++) {
  43.             if (g[i][j] != '.' && !used[i][j]) {
  44.                 answ++;
  45.                 dfs({i, j});
  46.             }
  47.         }
  48.     }
  49.     cout << answ;
  50.     return 0;
  51. }
  52.  
Advertisement
Add Comment
Please, Sign In to add comment
Advertisement