各位巨佬,为什么P3818的第9个数据点会错
附上代码
#include<bits/stdc++.h>
using namespace std;
int n,m,x,y,a[20000010][4],f[4][2]={{1,0},{0,-1},{-1,0},{0,1}};
bool b[10001][10001][2];
char ch;
int main(){
cin>>n>>m>>x>>y;
for(int i=1;i<=n;i++)
for(int j=1;j<=m;j++){
cin>>ch;
if(ch=='#'){
b[i][j][0]=1;
b[i][j][1]=1;
}
}
a[1][0]=1;
a[1][1]=1;
a[1][2]=0;
a[1][3]=1;
b[1][1][1]=1;
int head=0,tail=1;
while(head<tail){
head++;
int xx=a[head][0]+x;
int yy=a[head][1]+y;
if(xx>0&&yy>0&&xx<=n&&yy<=m&&a[head][3]&&!b[xx][yy][1]){
tail++;
a[tail][3]=0;
a[tail][0]=a[head][0]+x;
a[tail][1]=a[head][1]+y;
a[tail][2]=a[head][2]+1;
b[a[head][0]+x][a[head][1]+y][0]=1;
}
for(int i=0;i<4;i++){
int xx=a[head][0]+f[i][0];
int yy=a[head][1]+f[i][1];
if(xx==n&&yy==m){
cout<<a[head][2]+1;
return 0;
}
if(!b[xx][yy][a[head][3]]&&xx>0&&xx<=n&&yy>0&&yy<=m){
tail++;
b[xx][yy][a[head][3]]=1;
a[tail][2]=a[head][2]+1;
a[tail][0]=xx;
a[tail][1]=yy;
a[tail][3]=a[head][3];
}
}
}
// for(int i=1;i<=head;i++)
// cout<<a[i][0]<<" "<<a[i][1]<<" "<<a[i][2]<<" "<<a[i][3]<<endl;
cout<<-1;
return 0;
}