本蒟蒻找不出问题在哪,发个帖子问问大佬。
#include<bits/stdc++.h>
using namespace std;
struct node{
int x,y,step;
};
node q[5000005];
node po;
int c;
int f,r;
int n,m;
char mp[5005][5005];
int wx[4]={0,0,1,-1},wy[4]={1,-1,0,0};
int main()
{
cin>>n>>m;
for(int i=1;i<=n;i++)
{
for(int j=1;j<=m;j++)
{
cin>>mp[i][j];
if(mp[i][j]=='@')
{
mp[i][j]='*';
q[r++]=node{i,j,0};
}
}
}
while(f<r)
{
po=q[f++];
for(int i=0;i<4;i++)
{
int xx=po.x+wx[i];
int yy=po.y+wy[i];
if(mp[xx][yy]>='A'&&mp[xx][yy]<='Z')
{
c=0;
for(int i=2;i<=n-1;i++)
{
for(int j=2;j<=n-1;j++)
{
if(i==xx&&j==yy)
{
continue;
}
else if(mp[i][j]==mp[xx][yy])
{
q[r++]=node{i,j,po.step+1};
c=1;
break;
}
}
if(c==1)
{
break;
}
}
}
if(mp[xx][yy]=='.')
{
mp[xx][yy]='*';
q[r++]=node{xx,yy,po.step+1};
}
if(mp[xx][yy]=='=')
{
po.step++;
cout<<po.step;
return 0;
}
}
}
return 0;
}