珂幻,太珂幻了。
在很多很多次爆-1
之后,小蒟蒻终于彻底崩溃,前来求助各位大佬。
#include<bits/stdc++.h>
using namespace std;
string s[1005];
int h,w,d,r;
int stp[1005][1005][2];
bool rxz(int p,int q){
return p>0&&q>0&&p<=h&&q<=w&&s[p][q]=='.';
}
struct chen_zhe{
int x,y,mgc;
};
queue<chen_zhe>kkk;
const int dx[]={0,0,0,1,-1};
const int dy[]={0,1,-1,0,0};
inline void BFS(){
while(!kkk.empty()&&stp[h][w][0]==-1&&stp[h][w][1]==-1){
chen_zhe tmp=kkk.front();
kkk.pop();
for(int i=1;i<=4;i++){
int x=tmp.x+dx[i];
int y=tmp.y+dy[i];
if(rxz(x,y)&&stp[x][y][tmp.mgc]==-1){
kkk.push((chen_zhe){x,y,tmp.mgc});
stp[x][y][tmp.mgc]=stp[tmp.x][tmp.y][tmp.mgc]+1;
if(tmp.mgc==0&&stp[x+d][y+r][1]==-1&&rxz(x+d,y+r)){
kkk.push((chen_zhe){x+d,y+r,1});
stp[x+d][y+r][1]=stp[x][y][0]+1;
}
}
}
}
}
int main(){
ios::sync_with_stdio(false);
cin.tie(0);
cout.tie(0);
cin>>h>>w>>d>>r;
for(int i=1;i<=h;i++){
cin>>s[i];
}
memset(stp,-1,sizeof(stp));
kkk.push((chen_zhe){1,1,0});
stp[1][1][0]=0;
BFS();
if(stp[h][w][1]==-1&&stp[h][w][0]==-1){
cout<<-1;
}
else{
cout<<min(stp[h][w][0]==-1?1<<30:stp[h][w][0],stp[h][w][1]==-1?1<<30:stp[h][w][1]);
}
return 0;
}
据说,帮我把代码调好的大佬会被我关注哦