#include<iostream>
#include<cstdio>
#include<algorithm>
using namespace std;
int m,n;
int a[101][101];
int sx,sy;
int ex,ey;
const int d[5][2]={{-1,0},{0,+1},{+1,0},{0,-1}};
struct node{
int x;
int y;
};
node ans[1001];
bool flag;
void print(int nn){
flag=true;
for (int i=1;i<nn;i++) {
printf("(%d,%d)->",ans[i].x ,ans[i].y );
}
printf("(%d,%d)->\n",ans[nn].x,ans[nn].y);
}
void bfs(int x,int y,int sum){
if(x==ex&&y==ey){
print(sum);
}
for(int i=1;i<=4;i++){
int xx=x+d[i][0];
int yy=y+d[i][1];
if(a[xx][yy]){
ans[sum].x=xx+1,ans[sum].y=yy+1;
bfs(xx,yy,sum+1);
}
a[x][y]=1;
}
}
int main(){
freopen("walk.in","r",stdin);
freopen("walk.out","w",stdout);
scanf("%d%d",&m,&n);
for(int i=1;i<=m;i++)
for(int j=1;j<=n;j++)
scanf("%d",&a[i][j]);
scanf("%d%d",&sx,&sy);
scanf("%d%d",&ex,&ey);
if(a[sx][sy]==0||a[ex][ey]==0){
printf("-1");
return 0;
}
ans[1].x=sx;
ans[1].y=sy;
bfs(sx,sy,2);
if(!flag){
printf("-1");
return 0;
}
}
蒟蒻手写的广搜(求调)