求大佬帮忙看看 我5-10 MLE 这是代码
#include <cstdio>
#include <queue>
#include <iostream>
using namespace std;
struct stu{
int a,b,s,w;
};
int n,k;
char g[1001][1001];
int d[4][2]={{1,0},{-1,0},{0,1},{0,-1}};
queue<stu> q;
int bfs()
{
int x,y,t,o;
q.push({1,1,0,0});
while(!q.empty())
{
x=q.front().a;
y=q.front().b;
t=q.front().s;
o=q.front().w;
q.pop();
if(x==n && y==n) return t;
for(int i=0,fx,fy;i<4;i++)
{
fx=x+d[i][0];
fy=y+d[i][1];
if(fx<=0 || fy<=0 || fx>n || fy>n) continue;
if(g[fx][fy]!='#')
{
if(g[fx][fy]=='%')
{
g[fx][fy]='.';
q.push({fx,fy,t+1,k});
}
if(g[fx][fy]=='X')
{
if(o<=0) continue;
q.push({fx,fy,t+1,o-1});
}
if(g[fx][fy]=='.')
{
q.push({fx,fy,t+1,o-1});
}
}
}
}
return -1;
}
int main()
{
int ck;
scanf("%d%d",&n,&k);
for(int i=1;i<=n;i++)
for(int j=1;j<=n;j++)
{
scanf(" %c",&g[i][j]);
}
ck=bfs();
printf("%d",ck);
return 0;
}