#include<bits/stdc++.h>
using namespace std;
const int maxn=107;
char g[maxn][maxn];
int n,m,vis[maxn][maxn],sx,sy,cnt;
int dir[4][2]={1,0,0,1,-1,0,0,-1};
int check(int x,int y){
if(x>=0&&x<n&&y>=0&&y<m) return 1;
return 0;
}
void dfs(int x,int y){
for(int i=0;i<4;i++){
int tx=x+dir[i][0],ty=y+dir[i][1];
if(!vis[tx][ty]&&check(tx,ty)){
vis[tx][ty]=1;cnt++;
dfs(tx,ty);
}
}
}
int main(){
while(cin>>m>>n){
if(n==0&&m==0) break;
memset(vis,0,sizeof(vis));
for(int i=0;i<n;i++)
for(int j=0;j<m;j++){
cin>>g[i][j];
vis[i][j]=0;
if(g[i][j]=='#')
vis[i][j]=1;
else if(g[i][j]=='@'){
sx=i;sy=j;
}
}
cnt=1;
vis[sx][sy]=1;
dfs(sx,sy);
cout<<cnt<<endl;
}
}
07-12
“相关推荐”对你有帮助么?
-
非常没帮助
-
没帮助
-
一般
-
有帮助
-
非常有帮助
提交