1 2 3 4 5 6 7 8 9 10 11 12 13 14 15 16 17 18 19 20 21 22 23 24 25 26 27 28 29 30 31 32 33 34 35 36 37 38 39 40 41 42 43 44 45 46 47 48 49 50 51 52 53 54 55 56
| #include <bits/stdc++.h>
using namespace std; const int N = 1010;
int n; int st[N][N]; char g[N][N]; int dx[4] = {0,0,1,-1}; int dy[4] = {1,-1,0,0}; int d[4][2] = {{0,1}, {0,-1}, {1,0}, {-1,0}}; int flag,ans=0;
void dfs(int i,int j){ st[i][j] = 1; if(g[i+1][j]=='#' && g[i-1][j]=='#' && g[i][j+1]=='#' && g[i][j-1]=='#'){ flag = 1; } for(int a=0;a<4;a++){ int x = i+dx[a]; int y = j+dy[a]; if(!st[x][y] && g[x][y] == '#'){ dfs(x,y); } } }
int main(){ cin >> n; for(int i=1;i<=n;i++){ for(int j=1;j<=n;j++){ cin >> g[i][j]; } } for(int i=1;i<=n;i++){ for(int j=1;j<=n;j++){ if(g[i][j] == '#' && !st[i][j]){ flag = 0; dfs(i,j); if(flag == 0){ ans++; } } } } cout << ans; return 0; }
|