#include <bits/stdc++.h>/*题目描述
指挥部被突来的洪水淹没了,还好指挥部有在某些重要的地方起一些围墙,用*号表示,而一个封闭的*号区域洪水是进不去的……现在给出指挥部的围墙建设图,问指挥部没被淹到的重要区域(由"0"表示)有多少。
输入
第一行是两个数,x和y(x,y<=500)
第二行及以下是一个由*和0组成的x*y的图。
输出
输出没被水淹没的指挥部的“0”的数量(计算被*围住的0的个数)。*/
using namespace std;
int n,m,fx[4]={0,0,1,-1},fy[4]={-1,1,0,0},sum=0;
char a[501][501];
void dfs(int x,int y){
a[x][y]='k';
for(int h=0;h<4;h++){
int tx=x+fx[h];
int ty=y+fy[h];
if(tx<=n&&tx>=1&&ty<=m&&ty>=1&&a[tx][ty]=='0'){
dfs(tx,ty);
}
}
}
int main(){
cin>>n>>m;
for(int j=1;j<=n;j++){
for(int k=1;k<=m;k++)cin>>a[j][k];
}
for(int j=1;j<=n;j++){
for(int k=1;k<=m;k++){
if((j>1&&j<n)&&(k>1&&k<m)||a[j][k]=='*')continue;
dfs(j,k);
}
}
for(int j=1;j<=n;j++){
for(int k=1;k<=m;k++){
if(a[j][k]=='0')sum++;
}
}
cout<<sum;
return 0;
}
/**************************************************************
Problem: 1913
User: zhouhongyi
Language: C++
Result: Accepted
Time:23 ms
Memory:2320 kb
****************************************************************/