joylintp

庭院裡的水池

Aug 24th, 2021
1,324
0
Never
Not a member of Pastebin yet? Sign Up, it unlocks many cool features!
C++ 1.83 KB | None | 0 0
  1. #include<bits/stdc++.h>
  2. using namespace std;
  3.  
  4. //{
  5. //#pragma gcc optimize("Ofast,unroll-loops")
  6. //#pragma gcc target("sse,sse2,sse3,ssse3,sse4,avx,avx2,fma,abm,mmx,popcnt,tune=native")
  7. //#define int long long
  8. //#define double long double
  9. #define MP make_pair
  10. #define F first
  11. #define S second
  12. #define MOD 1000000007
  13. //}
  14.  
  15. bool g[1002][1002], vis[1002][1002];
  16. int dx[] = {-1, 1, 0, 0}, dy[] = {0, 0, -1, 1};
  17.  
  18. void dfs(int x, int y)
  19. {
  20.     vis[x][y] = true;
  21.     for (int i = 0; i < 4; i++)
  22.     {
  23.         int nx = x + dx[i], ny = y + dy[i];
  24.         if (!vis[nx][ny] && g[nx][ny])
  25.             dfs(nx, ny);
  26.     }
  27. }
  28.  
  29. signed main()
  30. {
  31.     ios_base::sync_with_stdio(false);
  32.     cin.tie(0);
  33.  
  34.     int T;
  35.     cin >> T;
  36.     while (T--)
  37.     {
  38.         int N, M;
  39.         cin >> N >> M;
  40.  
  41.         for (int i = 0; i <= N + 1; i++)
  42.             for (int j = 0; j <= M + 1; j++)
  43.                 g[i][j] = false, vis[i][j] = false;
  44.  
  45.         for (int i = 1; i <= N; i++)
  46.         {
  47.             string s;
  48.             cin >> s;
  49.  
  50.             for (int j = 1; j <= M; j++)
  51.                 if (s[j - 1] == '.')
  52.                     g[i][j] = true;
  53.         }
  54.  
  55.         int ans = 0;
  56.         for (int i = 1; i <= N; i++)
  57.             for (int j = 1; j <= M; j++)
  58.                 if (!vis[i][j] && g[i][j])
  59.                     ans++, dfs(i, j);
  60.         cout << ans << '\n';
  61.     }
  62.  
  63.     return 0;
  64. }
  65.  
  66. //      *****  *****  *   *  *      *****  *   *  *****  *****
  67. //        *   *   *  *   *  *        *    **  *    *    *   *
  68. //       *   *   *  *****  *        *    * * *    *    *****
  69. //   *  *   *   *    *    *        *    *  **    *    *
  70. //  ****   *****    *    *****  *****  *   *    *    *
  71.  
  72. //     *   *   ***   *   *  **
  73. //    *   *  *   *  *   *  **
  74. //   * * *  *****  *****  **
  75. //  * * *  *   *  *   *
  76. //  * *   *   *  *   *  **
Advertisement
Add Comment
Please, Sign In to add comment