#include<stdio.h>
#include<string.h>
#include<queue>
using namespace std;
const int maxn = 1e3;
char mp[maxn][maxn];
int vis[maxn][maxn];
int dx[10] = {0,0,-1,1,1,1,-1,-1};
int dy[10] = {1,-1,0,0,-1,1,-1,1};
struct node{
int x,y;
int step;
node(int _x, int _y, int _step = 0): x(_x), y(_y),step(_step){
}
bool operator < (const node & i)const{
return step > i.step;
}
};
int main (){
int w,h;
while (scanf("%d%d", &w, &h) != EOF && w != 0){
for (int i = 0 ; i < h; i++){
scanf("%s", mp[i]);
}
int sx,sy;
for (int i = 0; i < h; i++){
for (int j = 0; j < w; j++){
if (mp[i][j] == '@'){
sx = i;
sy = j;
}
}
}
memset(vis,0,sizeof(vis));
vis[sx][sy] = 1;
queue<node>que;
que.push(node(sx,sy));
int ans = 1;
while (!que.empty() ) {
node tem = que.front() ;
que.pop() ;
for (int i = 0; i < 4; i++){
int x = tem.x + dx[i];
int y = tem.y + dy[i];
if (x < 0 || y < 0 || x >= h || y >= w) continue;
if (vis[x][y] == 1) continue;
if (mp[x][y] == '#') continue;
que.push(node(x,y));
vis[x][y] = 1;
ans++;
}
}
printf("%d\n",ans);
}
}
POJ 1979 Red and Black
最新推荐文章于 2020-02-10 21:58:38 发布