AcWing 1113. 红与黑
原题链接
简单
作者:
新嘎坡
,
2022-02-24 14:52:24
,
所有人可见
,
阅读 119
#include<iostream>
#include<algorithm>
#include<cstring>
#include<queue>
using namespace std;
typedef pair<int,int> PII;
#define x first
#define y second
const int N=30;
char st[N][N];
int ds[N][N];
int w,h;
int bfs(PII start)
{
queue<PII> q;
memset(ds,-1,sizeof ds);
q.push(start);
ds[start.x][start.y]=0;
int res=0;
while(q.size())
{
PII t=q.front();
q.pop();
res++;
int d[4][2]={{-1,0},{1,0},{0,-1},{0,1}};
for(int i=0;i<4;i++)
{
int x=t.x+d[i][0],y=t.y+d[i][1];
if(x<0||x>=h||y<0||y>=w) continue;
if(st[x][y]=='#') continue;
if(ds[x][y]!=-1) continue;
ds[x][y]=0;
q.push({x,y});
}
}
return res;
}
int main()
{
while(scanf("%d%d",&w,&h)&&w&&h)
{
PII start;
for(int i=0;i<h;i++)
scanf("%s",st[i]);
for(int i=0;i<h;i++)
for(int j=0;j<w;j++)
if(st[i][j]=='@')
start={i,j};
//for(int i=0;i<h;i++)
// cout<<st[i]<<endl;
int cnt=bfs(start);
cout<<cnt<<endl;
}
return 0;
}