BFS题~注意细节就行,对传送门需要特别处理下~

代码:

#include<cstdio>
#include<cstring>
#include<iostream>
#include<queue>
using namespace std;
const int maxn=51;
struct node
{int x;int y;int ans;
};
queue<node> q;
bool vis[maxn][maxn];
char map[maxn][maxn];
int gox[maxn][maxn],goy[maxn][maxn],fx[maxn],fy[maxn];
int movex[4]={0,0,-1,1},movey[4]={1,-1,0,0};
int n,m;
int main()
{int T;scanf("%d",&T);while(T--){memset(vis,0,sizeof(vis));memset(gox,0,sizeof(gox));memset(goy,0,sizeof(goy));memset(fx,0,sizeof(fx));memset(fy,0,sizeof(fy));scanf("%d%d",&n,&m);for(int i=0;i<=n+1;i++)map[i][0]=map[i][m+1]='#';for(int i=0;i<=m+1;i++)map[0][i]=map[n+1][i]='#';for(int i=1;i<=n;i++){getchar();for(int j=1;j<=m;j++){scanf("%c",&map[i][j]);if(map[i][j]=='L'){q.push((node){i,j});vis[i][j]=1;}else if(map[i][j]>='a'&&map[i][j]<='z'){if(!fx[map[i][j]-'a']){fx[map[i][j]-'a']=i;fy[map[i][j]-'a']=j;}else{gox[i][j]=fx[map[i][j]-'a'];goy[i][j]=fy[map[i][j]-'a'];gox[fx[map[i][j]-'a']][fy[map[i][j]-'a']]=i;goy[fx[map[i][j]-'a']][fy[map[i][j]-'a']]=j;}}}}int ans=-1;while(!q.empty()){node ita=q.front();q.pop();for(int i=0;i<4;i++){int itx=ita.x+movex[i];int ity=ita.y+movey[i];if(map[itx][ity]>='a'&&map[itx][ity]<='z'){int a=itx;int b=ity;itx=gox[a][b];ity=goy[a][b];}if(vis[itx][ity]||map[itx][ity]=='#')continue;if(map[itx][ity]=='Q'){ans=ita.ans+1;break;}q.push((node){itx,ity,ita.ans+1});vis[itx][ity]=1;}if(ans!=-1){while(!q.empty())q.pop();break;}}printf("%d\n",ans);}return 0;
}

Uestc-1002-解救小Q相关推荐

  1. uestc oj 1002 解救小Q

    解救小Q Description 小Q被邪恶的大魔王困在了迷宫里,love8909决定去解救她. 迷宫里面有一些陷阱,一旦走到陷阱里,就会被困身亡:(,迷宫 里还有一些古老的传送阵,一旦走到传送阵上, ...

  2. bzoj3007 解救小云公主

    3007: 解救小云公主 Time Limit: 5 Sec  Memory Limit: 512 MB Submit: 159  Solved: 71 [Submit][Status][Discus ...

  3. 牛客练习赛81 E. 小 Q 与函数求和 1( “简单莫比乌斯反演” ,欧拉函数性质)

    整理的算法模板合集: ACM模板 点我看算法全家桶系列!!! 实际上是一个全新的精炼模板整合计划 牛客练习赛81 E. 小 Q 与函数求和 1( "简单莫比乌斯反演" ) Prob ...

  4. 牛客练习赛81 B. 小 Q 与彼岸花(FWT nlogn做法)

    整理的算法模板合集: ACM模板 点我看算法全家桶系列!!! 实际上是一个全新的精炼模板整合计划 Weblink https://ac.nowcoder.com/acm/contest/11171/B ...

  5. 剑指Offer——网易笔试之解救小易

    知识要点 首先介绍一下曼哈顿,曼哈顿是一个极为繁华的街区,高楼林立,街道纵横,从A地点到达B地点没有直线路径,必须绕道,而且至少要经C地点,走AC和 CB才能到达,由于街道很规则,ACB就像一个直角3 ...

  6. HDU 4505 小Q系列故事——电梯里的爱情

    小Q系列故事--电梯里的爱情                                                                                   Tim ...

  7. 腾讯----小Q的歌单

    腾讯----小Q的歌单 文章目录 腾讯----小Q的歌单 一.题目描述 二.分析 方法一:组合 方法二:动规 一.题目描述 小Q有X首长度为A的不同的歌和Y首长度为B的不同的歌,现在小Q想用这些歌组成 ...

  8. 腾讯----贪吃的小Q

    腾讯----贪吃的小Q 文章目录 腾讯----贪吃的小Q 一.题目描述 二.分析 三.代码 一.题目描述 小Q的父母要出差N天,走之前给小Q留下了M块巧克力.小Q决定每天吃的巧克力数量不少于前一天吃的 ...

  9. HDUOJ-----4510 小Q系列故事——为什么时光不能倒流

    小Q系列故事--为什么时光不能倒流 Time Limit: 300/100 MS (Java/Others)    Memory Limit: 65535/32768 K (Java/Others) ...

  10. P3700 [CQOI2017]小Q的表格(反演、分块)

    P3700 [CQOI2017]小Q的表格 给定一个大小为n×nn \times nn×n的表格,初始时i,ji, ji,j位置上填的是f(i,j)=i×jf(i, j) = i \times jf( ...

最新文章

  1. w7计算机的工具栏爱那里,Win7系统如何在任务栏中添加爱心图标图文教程
  2. java将字符串转换成可执行代码
  3. 对比学习效果差?谷歌提出弱语义负样本,有效学习高级特征!
  4. 【嵌入式】使用Cross Toolchain构建交叉工具链
  5. java基础技巧_java基础中的技巧
  6. 如何复制百度文库的内容
  7. 启动计算机 登管理员用户,Windows xp系统使用管理员账户登入系统的技巧
  8. Android 10.0 去掉SystemUI中的电池图标显示
  9. java pow_Java中Math.pow()的用法
  10. 让Thread#stop方法无法终止你的线程
  11. outlook设置263邮件服务器,Outlook 2010中263邮箱客户端设置
  12. 【Python】多进程 AttributeError: Can‘t pickle local object
  13. 112、工作繁忙,随口胡说;接近胡说,敷衍而已
  14. 微信 css area,微信小程序--手写一个地区选择器(多级联动)
  15. STM32F103系列的单片机定时器
  16. 智能驾驶系统简介和测试要点分析
  17. 一步一步在平衡车上实现卡尔曼滤波
  18. 如何快速入门Ctex
  19. 如何基于Miniconda使用Pycharm调用Gurobi
  20. 常用CDK生成Java算法(大数异或)

热门文章

  1. 北大告别过去,走向未来
  2. pthread 线程基本函数
  3. 【知识图谱】 | 《知识图谱——方法、实践与应用》阅读笔记
  4. 万字长文带你感受Tesla AI Day 2022-特斯拉自动驾驶FSD
  5. 测试理论系列——软件测试分类
  6. C++ 关键字auto tcy
  7. 通达OA 小飞鱼关于OA工作流实施应用过程中设计规范的建议
  8. the current input timing is not supported--DELL显示器报错解决方案
  9. python怎么创建桌面快捷_【原创python】桌面快捷菜单,远离满桌面的快捷方式
  10. 统计数据也说谎?如何跳出数据分析盲区