C
A_yixiubro · · 个人记录
#include <bits/stdc++.h>
using namespace std;
int n,m,sx,sy,ex,ey,head,tail;
char a[1001][1001];
int q[1000001][4];
int d[]={0,0,1,0,-1,0};
void print(int k){
if (q[k][3]!=0)
print(q[k][3]);
printf("(%d,%d)",q[k][1],q[k][2]);
if (k!=tail)
cout<<"->";
}
int main(){
while (1){
head=tail=1;
cin>>n>>m;
if (n==0&&m==0)
break;
bool f=1;
memset(q,0,sizeof(q));
for (int i=1;i<=n;i++)
for (int j=1;j<=m;j++)
cin>>a[i][j];
cin>>sx>>sy>>ex>>ey;
q[1][1]=sx;
q[1][2]=sy;
q[1][3]=0;
while (head<=tail&&f){
int tx,ty;
for (int i=1;i<=4;i++){
tx=q[head][1]+d[i];
ty=q[head][2]+d[i+1];
if (tx>0&&tx<=n&&ty>0&&ty<=m&&a[tx][ty]=='.'){
a[tx][ty]='#';
tail++;
q[tail][1]=tx;
q[tail][2]=ty;
q[tail][3]=head;
}
if (tx==ex&&ty==ey){
print(tail);
cout<<endl;
f=0;
break;
}
}
head++;
}
}
return 0;
}