#include <iostream>
using namespace std;
char ch[1005][1005],arr[1005][1005]={0};
int n,sum1=0,sum2=0,dre1[4]={0,0,1,-1},dre2[4]={1,-1,0,0};
void dfs2(int i,int j)
{
arr[i][j]='.';
for(int k=0;k<4;k++)
{
int x=dre1[k]+i;
int y=dre2[k]+j;
if(arr[x][y]=='#')
dfs2(x,y);
}
}
void dfs1(int i,int j)
{
ch[i][j]='.';
for(int k=0;k<4;k++)
{
int x=dre1[k]+i;
int y=dre2[k]+j;
if(ch[x][y]=='#')
dfs1(x,y);
}
}
int main()
{
scanf("%d",&n);
for(int i=0;i<n;i++)
scanf("%s",ch[i]);
for(int i=0;i<n;i++){
for(int j=0;j<n;j++)
{
if(ch[i][j]=='.')
arr[i][j]='.';
if(ch[i][j]=='#')
{
if(ch[i-1][j]=='.'||ch[i+1][j]=='.'||ch[i][j-1]=='.'||ch[i][j+1]=='.')
arr[i][j]='.';
else
arr[i][j]='#';
}
}
}
for(int i=0;i<n;i++)
{
for(int j=0;j<n;j++)
{
if(ch[i][j]=='#'){
sum1++;
dfs1(i,j);
}
}
}
for(int i=0;i<n;i++)
{
for(int j=0;j<n;j++)
{
if(arr[i][j]=='#'){
sum2++;
dfs2(i,j);
}
}
}
printf("%d",sum1-sum2);
return 0;
}
我想问下这个为什么过不了所有点啊