maze

maze

https://ac.nowcoder.com/acm/problem/15665

前言:

喷死这题,lj死了.出口也有陷阱,大家要小心哦!

思路:

直接bfs+优先队列就好了.

代码:

#include <bits/stdc++.h>
using namespace std;
const int N=3e2+5;
struct xb{
    int x,y;
}st,ed;
struct Q{
    int x,y,step;
    bool operator<(const Q &s)const{
    return step>s.step;
      }
};
vector<xb>v[N][N];
char s[N][N];
bool vis[N][N];
priority_queue<Q>q;
int n,m,t;
int dx[4]={1,-1,0,0};
int dy[4]={0,0,1,-1};
int bfs()
{
    while(q.size())
    {
        auto T=q.top();q.pop();
        if(vis[T.x][T.y]||T.x<1||T.x>n||T.y<1||T.y>m||s[T.x][T.y]=='#')    continue;
        if(T.x==ed.x&&T.y==ed.y)    return T.step;
        vis[T.x][T.y]=true;
        for(int i=0;i<4;i++)    q.push({T.x+dx[i],T.y+dy[i],T.step+1});
        for(auto u:v[T.x][T.y])    q.push({u.x,u.y,T.step+3});
    }return -1;
}

int main()
{
    while(scanf("%d%d%d",&n,&m,&t)!=EOF)
    {
        for(int i=1;i<=n;i++)
            scanf("%s",s[i]+1);
        while(q.size())    q.pop();
        for(int i=1;i<=n;i++)
        {
            for(int j=1;j<=m;j++)
            {
                if(s[i][j]=='S')    st={i,j};
                if(s[i][j]=='T')    ed={i,j};
                vis[i][j]=false;
                v[i][j].clear();
            }
        }q.push({st.x,st.y,0});
        for(int i=1;i<=t;i++)
        {
            int x1,y1,x2,y2;
            scanf("%d%d%d%d",&x1,&y1,&x2,&y2);
            x1++,x2++,y1++,y2++;
            v[x1][y1].push_back({x2,y2});
        }for(auto u:v[st.x][st.y])    q.push({u.x,u.y,3});
        printf("%d\n",bfs());
    }
    return 0;
}
lpt的小屋 文章被收录于专栏

我想要一份甜甜的爱情

全部评论
简洁明了orz
1 回复 分享
发布于 2022-04-11 19:53
简洁明了orz
1 回复 分享
发布于 2022-07-10 12:39
好的题解,可惜不符合我的码风,不过能看懂,谢谢你
点赞 回复 分享
发布于 2023-09-06 21:22 湖南

相关推荐

难怪不开摄像头,全是简单的性格题,比大疆友善多了
NULL10086:今早上发的测评,我这还没做呢,官网上已经显示挂了
投递大疆等公司7个岗位
点赞 评论 收藏
分享
06-12 17:46
门头沟学院 Java
运营你豪哥:来说重点: ​1.项目前置,时间倒序。​​ 2.​项目描述强化结果与量化效果(STAR原则里的R)。​​ ​3.个人技能精炼,明确掌握程度,突出核心。​​ ​4.增加强有力开头的个人总结部分。​​ 5.​优化教育背景(成绩排名)、合并奖项与活动。​​
听劝,我这个简历该怎么改...
点赞 评论 收藏
分享
评论
12
1
分享

创作者周榜

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