红与黑bfs C++代码,一定注意行列呜呜呜
#include<cstdio>
#include<cstring>
#include<iostream>
#include<algorithm>
#define x first
#define y second
using namespace std;
const int N=25,M=N*N;
typedef pair<int,int> PII;
PII q[M];
char g[N][N];
bool st[N][N];
int n,m,cnt;
int dx[4]={-1,0,1,0},dy[4]={0,-1,0,1};
void bfs(int sx,int sy){
int hh,tt;
hh=0;
tt=0;
cnt=0;
q[0]={sx,sy};
st[sx][sy]=true;
while(hh<=tt){
PII t=q[hh++];
cnt++;
for(int i=0;i<4;i++){
int a=t.x+dx[i],b=t.y+dy[i];
if(st[a][b]==true){
continue;
}
if(a<0||a>=n||b<0||b>=m){
continue;
}
if(g[a][b]=='#'){
continue;
}
q[++tt]={a,b};
st[a][b]=true;
}
}
}
int main(){
while(scanf("%d%d",&m,&n)!=EOF){
cnt=0;
if(n==0&&m==0){
break;
}
for(int i=0;i<n;i++){
for(int j=0;j<m;j++){
cin>>g[i][j];
}
}
memset(st,false,sizeof st);
for(int i=0;i<n;i++){
for(int j=0;j<m;j++){
if(g[i][j]=='@'){
bfs(i,j);
printf("%d\n",cnt);
}
}
}
}
return 0;
}