法老王 • 1年前
using namespace std; int dx[]={0,0,-1,1}; int dy[]={1,-1,0,0}; struct point{
int x,y;
}; int a[1000][1000],ans; queue q; int m,n,startx,starty,endx,endy; void bfs(int x,int y){
point startxy,nowxy,go;
startxy.x=x;
startxy.y=y;
q.push(startxy);
a[x][y]=1;
while(!q.empty()){
nowxy.x=q.front().x;
nowxy.y=q.front().y;
q.pop();
//cout<<"1";
for(int t=0;t<4;t++){
int xx=dx[t]+nowxy.x;
int yy=dy[t]+nowxy.y;
go={xx,yy};
if(xx>0&&yy>0&&xx<=m&&yy<=m&&a[xx][yy]!=1){
a[xx][yy]=1;
q.push(go);
ans++;
if(xx==endx&&yy==endy){
cout<<ans;
return;
}
}
}
}
} int main(){
cin>>m;
for(int i=1;i<=m;i++){
for(int j=1;j<=m;j++){
scanf("%1d",&a[i][j]);
}
}
cin>>startx>>starty>>endx>>endy;
bfs(startx,starty);
return 0;
}//运行出错了;
评论: