18年全球变暖问题
#include<iostream>
#include<queue>
using namespace std;
char a[1000][1000];
int visit[1000][1000];
int dx[]={1,-1,0,0};
int dy[]={0,0,1,-1};
int N;int count1;int count2;
int ans=0;
struct point{
int x; int y;
point(){}
point(int a,int b):x(a),y(b){}
};
queue<point> q;
void bfs(){
point front=q.front();
q.pop();
count1++;
bool ispoint=false;
for(int i=0;i<4;i++){
int x=front.x+dx[i];
int y=front.y+dy[i];
if(x>=0&&x<N&&y>=0&&y<N&&a[x][y]=='#'&&visit[x][y]==0)
{
q.push(point(x,y));
visit[x][y]=1;
}
if(x>=0&&x<N&&y>=0&&y<N&&a[x][y]=='.'&&visit[x][y]==0)
ispoint=true;
}
if(ispoint){
count2++; }
if(count1==count2)
ans++;
}
int main()
{ cin>>N;
for(int i=0;i<N;i++){
for(int j=0;j<N;j++){
cin>>a[i][j];
if(a[i][j]=='#'&&visit[i][j]==0)
q.push(point(i,j)); } }
bfs();
cout<<ans;}