#include<iostream>
using namespace std;
typedef pair<int,int> PII;
const int N = 1010;
int n;
char s[N][N];
bool st[N][N];
PII q[N*N];
int dx[4]={0,-1,0,1},dy[4]={1,0,-1,0};
void bfs(int sx,int sy,int &total,int &bound){
int hh=0,tt=-1;
q[++tt] = {sx,sy};
st[sx][sy] = true;
while(hh<=tt){
PII t = q[hh++];
total ++;
bool is_bound = false;
for(int i=0;i<4;i++){
int x = t.first + dx[i],y=t.second + dy[i];
if(x<0 || x>=n || y<0 || y>=n || st[x][y]) continue;
if(s[x][y]=='.'){
is_bound = true;
continue;
}
q[++tt] = {x,y};
st[x][y] = true;
}
if(is_bound) bound++;
}
}
int main(){
scanf("%d",&n);
for(int i=0;i<n;i++) scanf("%s",s[i]);
int cnt = 0;
for(int i=0;i<n;i++){
for(int j=0;j<n;j++){
if(!st[i][j] && s[i][j]=='#'){
int total = 0,bound = 0;
bfs(i,j,total,bound);
if(total == bound) cnt++;
}
}
}
printf("%d",cnt);
}
全球变暖(bfs算法c++实现)
最新推荐文章于 2024-03-14 11:56:25 发布