求助大佬!!!

#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分?谢谢!!!

全部评论
有测试案例吗?
点赞 回复 分享
发布于 2023-04-20 00:00 四川
没有考虑不移动的情况
点赞 回复 分享
发布于 2023-04-18 09:46 山西

相关推荐

点赞 评论 收藏
分享
嵐jlu:我是山川🐔里🐔🧱的,阿里系简历全过; 你这简历一看就还是半成品啊,没有荣誉经历奖项什么的吗?
投递阿里巴巴集团等公司10个岗位
点赞 评论 收藏
分享
评论
点赞
收藏
分享

创作者周榜

更多
牛客网
牛客网在线编程
牛客网题解
牛客企业服务