BFS代码,46分
代码如下
#include<bits/stdc++.h>
using namespace std;
struct T{
int x,y;
};
int n,m,ans;
char a[110][110];
int dis[110][110];
const int dx[]={-1,-1,-1,0,0,1,1,1};
const int dy[]={-1,0,1,-1,1,-1,0,1};
void bfs(int sx,int sy)
{
memset(dis,-1,sizeof(dis));
queue<T>q;
q.push((T){sx,sy});
dis[sx][sy]=0,a[sx][sy]='M';
while(!q.empty())
{
T now=q.front();
q.pop();
for(int i=0;i<8;i++)
{
int nx=now.x+dx[i];
int ny=now.y+dy[i];
if(nx<1||nx>n||ny<1||ny>m||a[nx][ny]!='.')continue;
q.push((T){nx,ny});
dis[nx][ny]=dis[now.x][now.y]+1;
a[nx][ny]='M';
}
}
for(int i=1;i<=n;i++)
for(int j=1;j<=m;j++)
ans=max(ans,dis[i][j]);
}
int main()
{
int mx,my;
cin>>m>>n>>mx>>my;
for(int i=1;i<=n;i++)
for(int j=1;j<=m;j++)
cin>>a[i][j];
bfs(mx,my);
cout<<ans<<'\n';
return 0;
}