#include<iostream>
#include<queue>
using namespace std;
int a[501][501],x,y,cnt=0;
int main(){
queue<int> bfs;
char l;
int l1,l2;
cin>>x>>y;
for(int i=1;i<=x;i++){
for(int j=1;j<=y;j++){
cin>>l;
if(l!='*'){
cnt++;
if(i==1||j==1||i==x||j==y){
bfs.push(i*1000+j);
}
a[i][j]=1;
}
}
}
while(!bfs.empty()){
cnt--;
l1=bfs.front()/1000;
l2=bfs.front()%1000;
if(a[l1-1][l2]==1){
a[l1-1][l2]=0;
bfs.push(l1*1000+l2-1000);
}
if(a[l1][l2-1]==1){
a[l1][l2-1]=0;
bfs.push(l1*1000+l2-1);
}
if(a[l1+1][l2]==1){
a[l1+1][l2]=0;
bfs.push(l1*1000+l2+1000);
}
if(a[l1][l2+1]==1){
a[l1][l2+1]=0;
bfs.push(l1*1000+l2+1);
}
bfs.pop();
}
cout<<cnt;
}
代码风格有点怪,看不懂就算了