求助大佬!!!
#include <bits/stdc++.h>
using namespace std;
#define int long long
const int inf=0x3f3f3f3f;
char mp[1005][1005];
bool vis[1005][1005];
int dis[1005][1005];
int dx[]={0,1,0,-1};
int dy[]={1,0,-1,0};
queue<pair<int,int> >q;
int n,m,k;
int sx,sy,ex,ey;
int ans=inf;
void bfs()
{
memset(vis,0,sizeof(vis));
q.push(make_pair(sx,sy));
vis[sx][sy]=1;
while(!q.empty())
{
int x0=q.front().first,y0=q.front().second;
q.pop();
for(int i=0;i<4;i++)
{
int tx,ty;
tx=x0+dx[i],ty=y0+dy[i];
if(tx>n||ty>m||tx<=0||ty<=0) continue;
if(mp[tx][ty]!='#'&&vis[tx][ty]==0)
{
q.push(make_pair(tx,ty));
vis[tx][ty]=1;
// cout<<abs(ex-tx)+abs(ey-ty)<<endl;
dis[tx][ty]=dis[x0][y0]+1;
if(dis[tx][ty]<=k) ans=min(ans,abs(ex-tx)+abs(ey-ty));
}
}
}
}
signed main()
{
cin>>n>>m>>k;
for(int i=1;i<=n;i++)
{
for(int j=1;j<=m;j++)
{
cin>>mp[i][j];
if(mp[i][j]=='S') sx=i,sy=j;
if(mp[i][j]=='T') ex=i,ey=j;
}
}
bfs();
if(ans==inf) cout<<abs(ex-sx)+abs(ey-sy)<<endl;
else cout<<ans<<endl;
system("pause");
return 0;
}
求大佬帮我看看为什么只有93.33分?谢谢!!!
