#include <bits/stdc++.h>
using namespace std;
const int N = 1e3 + 10, M = N * N;
char g[N][N];
int n, ans, vis[N][N];
int dx[] = {0, 1, 0, -1}, dy[] = {1, 0, -1, 0};
bool flag = true; // 假设被淹没
void has_submerge(int sx, int sy)
{
vis[sx][sy] = 1;
bool has_water = false; // 假设周围没有水
for(int i = 0; i < 4; i++) // 遍历四个方向
{
int x = sx + dx[i], y = sy + dy[i];
if(x < 0 || y < 0 || x >= n || y >= n) continue;
if(vis[x][y] ) continue;
if(g[x][y] == '.'){ has_water = true; continue;}
vis[sx][sy] = 1;
has_submerge(x, y);
}
if(!has_water) flag = false; // 四个方向循环完再去更新flag
}
int main()
{
cin >> n;
for(int i = 0; i < n; i++) cin >> g[i];
for(int i = 0; i < n; i++)
for(int j = 0; j < n; j++)
if(g[i][j] == '#' && !vis[i][j])
{
flag = true;
has_submerge(i, j);
if(flag) ans ++;
}
cout << ans << endl;
return 0;
}
178 全球变暖
于 2025-01-05 11:50:54 首次发布