Uestc-1002-解救小Q
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相关推荐
- uestc oj 1002 解救小Q
解救小Q Description 小Q被邪恶的大魔王困在了迷宫里,love8909决定去解救她. 迷宫里面有一些陷阱,一旦走到陷阱里,就会被困身亡:(,迷宫 里还有一些古老的传送阵,一旦走到传送阵上, ...
- bzoj3007 解救小云公主
3007: 解救小云公主 Time Limit: 5 Sec Memory Limit: 512 MB Submit: 159 Solved: 71 [Submit][Status][Discus ...
- 牛客练习赛81 E. 小 Q 与函数求和 1( “简单莫比乌斯反演” ,欧拉函数性质)
整理的算法模板合集: ACM模板 点我看算法全家桶系列!!! 实际上是一个全新的精炼模板整合计划 牛客练习赛81 E. 小 Q 与函数求和 1( "简单莫比乌斯反演" ) Prob ...
- 牛客练习赛81 B. 小 Q 与彼岸花(FWT nlogn做法)
整理的算法模板合集: ACM模板 点我看算法全家桶系列!!! 实际上是一个全新的精炼模板整合计划 Weblink https://ac.nowcoder.com/acm/contest/11171/B ...
- 剑指Offer——网易笔试之解救小易
知识要点 首先介绍一下曼哈顿,曼哈顿是一个极为繁华的街区,高楼林立,街道纵横,从A地点到达B地点没有直线路径,必须绕道,而且至少要经C地点,走AC和 CB才能到达,由于街道很规则,ACB就像一个直角3 ...
- HDU 4505 小Q系列故事——电梯里的爱情
小Q系列故事--电梯里的爱情 Tim ...
- 腾讯----小Q的歌单
腾讯----小Q的歌单 文章目录 腾讯----小Q的歌单 一.题目描述 二.分析 方法一:组合 方法二:动规 一.题目描述 小Q有X首长度为A的不同的歌和Y首长度为B的不同的歌,现在小Q想用这些歌组成 ...
- 腾讯----贪吃的小Q
腾讯----贪吃的小Q 文章目录 腾讯----贪吃的小Q 一.题目描述 二.分析 三.代码 一.题目描述 小Q的父母要出差N天,走之前给小Q留下了M块巧克力.小Q决定每天吃的巧克力数量不少于前一天吃的 ...
- HDUOJ-----4510 小Q系列故事——为什么时光不能倒流
小Q系列故事--为什么时光不能倒流 Time Limit: 300/100 MS (Java/Others) Memory Limit: 65535/32768 K (Java/Others) ...
- 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( ...
最新文章
- w7计算机的工具栏爱那里,Win7系统如何在任务栏中添加爱心图标图文教程
- java将字符串转换成可执行代码
- 对比学习效果差?谷歌提出弱语义负样本,有效学习高级特征!
- 【嵌入式】使用Cross Toolchain构建交叉工具链
- java基础技巧_java基础中的技巧
- 如何复制百度文库的内容
- 启动计算机 登管理员用户,Windows xp系统使用管理员账户登入系统的技巧
- Android 10.0 去掉SystemUI中的电池图标显示
- java pow_Java中Math.pow()的用法
- 让Thread#stop方法无法终止你的线程
- outlook设置263邮件服务器,Outlook 2010中263邮箱客户端设置
- 【Python】多进程 AttributeError: Can‘t pickle local object
- 112、工作繁忙,随口胡说;接近胡说,敷衍而已
- 微信 css area,微信小程序--手写一个地区选择器(多级联动)
- STM32F103系列的单片机定时器
- 智能驾驶系统简介和测试要点分析
- 一步一步在平衡车上实现卡尔曼滤波
- 如何快速入门Ctex
- 如何基于Miniconda使用Pycharm调用Gurobi
- 常用CDK生成Java算法(大数异或)