用广搜写的,四条边都搜索一遍,但不知道那出问题了,输出是0,这题应该一个数组就可以的,布吉岛哪有问题……
#include<bits/stdc++.h>
using namespace std;
int a[520][520],n,m;;
bool b[520][520];
int px[5]={0,1,0,-1,0};
int py[5]={0,0,1,0,-1};
struct code{
int x,y;
};
void bfs(int qx,int qy){
b[qx][qy]=1;
queue <code> q;
code f;
f.x=qx,f.y=qy;
q.push(f);
int x2,y2;
while(!q.empty()){
x2=q.front().x,y2=q.front().y;
q.pop();
for(int i=1;i<=4;i++){
int u=x2+px[i],v=y2+py[i];
if(u>=1 && u<=n && v>=1 && v<=m && b[u][v]!=1){
b[u][v]=1;
code ff;
ff.x=u,ff.y=v;
q.push(ff);
}
}
}
}
int main(){
int ans=0;
cin>>n>>m;
char c;
for(int i=1;i<=n;i++){
for(int j=1;j<=m;j++){
cin>>c;
if(c=='#')b[i][j]=1;
}
}
for(int i=1;i<=m;i++) bfs(1,i);
for(int i=1;i<=m;i++) bfs(n,i);
for(int i=1;i<=n;i++) bfs(i,1);
for(int i=1;i<=n;i++) bfs(i,m);
for(int i=1;i<=n;i++){
for(int j=1;j<=m;j++){
if(b[i][j]==0)ans++;
}
}
cout<<ans;
return 0;
}