传送门
#include<bits/stdc++.h>
using namespace std;
int n,m,sx,sy,fx,fy,s=1,ok;
int a[20][20],vis[20][20];
int nx[5]={0,0,-1,0,1},ny[5]={0,-1,0,1,0};
int ansx[20],ansy[20];
void print()
{
ok=1;
for(int i=1;i<=s-1;i++) cout<<"("<<ansx[i]<<","<<ansy[i]<<")"<<"->";
cout<<"("<<ansx[s]<<","<<ansy[s]<<")"<<endl;
return;
}
void dfs(int x,int y)
{
if(x==fx&&y==fy)
{
print();
return;
}
for(int i=1;i<=4;i++)
{
int lx=x+nx[i],ly=y+ny[i];
if(lx<=n&&lx>=1&&ly<=m&&ly>=1&&vis[lx][ly]==0&&a[lx][ly]==1)
{
vis[lx][ly]=1;
s++;
ansx[s]=lx;
ansy[s]=ly;
dfs(lx,ly);
s--;
vis[lx][ly]=0;
}
}
return;
}
int main()
{
cin>>n>>m;
for(int i=1;i<=n;i++) for(int j=1;j<=m;j++) cin>>a[i][j];
cin>>sx>>sy>>fx>>fy;
ansx[1]=sx;
ansy[1]=sy;
vis[sx][sy]=1;
dfs(sx,sy);
if(ok==0) cout<<-1;
return 0;
}