|
#include<bits/stdc++.h>
using namespace std;
#define N 110
struct pos{
int x,y;
};
int cnt=0;
int n,m,xx,yy;
int maze[N][N];
bool vis[N][N];
int dr[4][2]={{0,1},{1,0},{-1,0},{0,-1}};
void bfs(){
if(maze[xx][yy]==0) {
return;
}
queue<pos>q;
pos a;
a.x=xx;
a.y=yy;
cnt++;
vis[xx][yy]=true;
q.push(a);
while (!q.empty()){
a=q.front();
q.pop();
for(int i=0;i<4;i++){
int nx=a.x+dr[i][0];
int ny=a.y+dr[i][1];
if(nx>=0&&nx<n&&ny>=0&&ny<m&&maze[nx][ny]>0&&!vis[nx][ny]){
cnt++;
pos np;
np.x=nx;
np.y=ny;
q.push(np);
vis[nx][ny]=true;
}
}
}
}
int main(){
cin>>n>>m;
cin>>xx>>yy;
for(int i=0;i<n;i++){
for(int j=0;j<m;j++){
cin>>maze[i][j];
}
}
bfs();
cout<<cnt;
}
|
|