求助大佬!!!
#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分?谢谢!!!