首页 > 其他分享 >11.迷宫问题

11.迷宫问题

时间:2023-04-03 21:47:44浏览次数:39  
标签:11 pre dist nums int tt 迷宫 back 问题

原题链接:https://www.acwing.com/problem/content/description/1078/

#include<iostream>
#include<cstring>
#include<vector>
using namespace std;

#define x first
#define y second
typedef pair<int,int> PII;
const int N=1010;
int n,hh,tt;
int g[N][N],dist[N][N];
PII q[N*N],pre[N][N];
int dx[4]={1,-1,0,0},dy[4]={0,0,1,-1};

void bfs()
{
    hh=0,tt=0;
    q[0]={0,0};
    memset(dist,-1,sizeof dist);
    dist[0][0]=0;
    while(hh<=tt)
    {
        PII t=q[hh++];
        if(t.x==n-1&&t.y==n-1) return;
        for(int i=0;i<4;i++){
            int x=t.x+dx[i],y=t.y+dy[i];
            if(x<0||x>=n||y<0||y>=n) continue;
            if(g[x][y]==1) continue;
            if(dist[x][y]==-1)
            {
                dist[x][y]=dist[t.x][t.y]+1;
                pre[x][y]={t.x,t.y};
                q[++tt]={x,y};
            }
        }
    }
}

int main()
{
    scanf("%d",&n);
    for(int i=0;i<n;i++)
    {
        for(int j=0;j<n;j++)
        {
            scanf("%d",&g[i][j]);
        }
    }
    bfs();
    int a=pre[n-1][n-1].x,b=pre[n-1][n-1].y;
    vector<PII> nums;
    nums.push_back({n-1,n-1});
    while(a||b){
        nums.push_back({a,b});
        int t1=pre[a][b].x,t2=pre[a][b].y;
        a=t1,b=t2;
    }
    nums.push_back({0,0});
    for(int i=nums.size()-1;i>=0;i--)
    {
        printf("%d %d\n",nums[i].x,nums[i].y);
    }
    return 0;
}

标签:11,pre,dist,nums,int,tt,迷宫,back,问题
From: https://www.cnblogs.com/linearlearn/p/17284545.html

相关文章

  • 启动redis时,告警日志中出现“The TCP backlog setting of 511……”以及“overcommit_
    问题描述:启动redis时,告警日志中出现“TheTCPbacklogsettingof511……”以及“overcommit_memoryissetto0…..”警告,如下所示:系统:rhel7.9数据库:redis6.2.61、异常重现[[email protected]]#redis-serverredis6379.conf[root@leo-redis626-aredis-6.......
  • Redis常见问题答疑
    数据类型一个数据类型都对应了很多种底层数据结构。以List为例,什么情况下是双向链表,反之又在什么情况下是压缩列表呢?还是说是并存状态?1、Hash和ZSet是数据量少采用压缩列表存储,数据量变大转为哈希表或跳表存储2、但List不是这样,是并存的状态,List是双向链表+压缩列表key过期......
  • 【第27天】SQL进阶-查询优化- performance_schema系列实战三:锁问题排查(表级锁)(SQL 小虚
    回城传送–》《32天SQL筑基》文章目录零、前言一、什么是表级锁二、什么时候适合加表级锁三、实战演练3.1数据准备(如果已有数据可跳过此操作)3.2开启第一个会话,执行显式加表级锁3.3开启第二个会话,对该表执行update更新3.4开启第三个会话,查询线程信息3.5分析3.6释放第一个会话......
  • echart js给相关参数赋值的问题
    需要在初始化的时候加上相关的定义,后面用js进行动态赋值的时候才能找到,否则报Undefined,定义:varoption={title:{text:'',textStyle:{color:'#5AC8FA'}},//color:'#00ff00',legend:{show:true,data:[],x:'right&......
  • 图像和流媒体 -- Sapera 安装遇到的问题
    一、下载安装包参看:GenieNanoM1930-NIR点击软件及例程下载二、安装遇到的问题(1)Installationdirectorymustbeonalocalharddrive解决方法:clsicacls%temp%/reset/T/Q/Cpause以上文件复制到txt中将后缀名修改为bat以管理员执行即可。windows自身权限的的问题。(2)安......
  • highcharts 3D圆环图y轴数据为0 的较多,会出现显示不出来的问题
    问题的效果图如下:  问题原因:好像是数据位置重叠了解决办法:没有找到比较合适的解决办法,最后选择了不显示值为0的,代码如下所示(主要代码已用红色背景显示):plotOptions:{pie:{allowPointSelect:true,cursor:'pointer',......
  • hadoop常见问题-too many fetch-failures
    现象:12/12/0517:06:19INFOmapred.JobClient:TaskId:attempt_201212051618_0002_m_000035_0,Status:FAILEDToomanyfetch-failures12/12/0517:06:19INFOmapred.JobClient:TaskId:attempt_201212051618_0002_m_000021_0,Status:FAILEDToomanyfetch-fai......
  • 数量关系中比·······低/高n%的问题
    在简单的数量关系中,设方程,经常会出现比·······低/高n%的语句,如何更好的设置和分析,要统一办法。①当遇到百分数时候,我习惯设置100x如,设总预算为100x则,基建支出为40x②出现比·······低/高n%的语句,直接列简易方程(低1-,高1+)如,图书购买支出比基建支出低25%则y/40x=......
  • 19c 和11g临时表空间使用率
    19c临时表空间使用率(实际正在使用的)selecttotal_extents,free_extents,used_extents,added_extentsfromv$sort_segment;  selectcasewhenexists(select*fromv$tempseg_usage)thenround((selectsum(a.blocks)*8192/sum(b.bytes)fromv$tempseg_usagea,dba_tem......
  • Oracle11G安装在Linux7.下版本上BUG处理
    1.Java页面框无法拖拽拉伸,需要加上jre环境变量./runInstaller-jreLoc/usr/lib/jvm/jre-1.8.02.安装执行到68%左右时报错解决方法:cd$ORACLE_HOME/sysman/libcpins_emagent.mkins_emagent.mk.bakviins_emagent.mk搜索:/NMECTL后面加上-lnnz11继续安装即可......