[JOY]1143 飘飘乎居士的约会
题目描述
又是美妙的一天,这天飘飘乎居士要和MM约会,因此他打扮的格外帅气。但是,因为打扮的时间花了太久,离约会的时间已经所剩无几。
幸运的是,现在飘飘乎居士得到了一张nm的地图,图中左上角是飘飘乎居士的位置,右下角是约会的地点。‘.’代表马路,‘’代表房屋。飘飘乎居士只能沿着‘.’行走(也就是不能踏入‘’),而且行走的方向只能为上下左右的相邻格子。为了不让MM等待太久,飘飘乎居士在整个过程中可能会使用一次飘飘神功(也可能不使用,但最多使用一次),使用飘飘神功后,飘飘乎居士可以走进房屋一次(也就是在全程的行走中最多可以走一个‘’,注意,只有一个);
现在飘飘乎居士想要知道最少需要走多少步,飘飘乎居士才能到达约会的地点。
输入格式
第一行,2个正整数 n和m,表示一个nm的矩阵
接下来n行,每行m个字符,字符一定为 ’.’ 或者是‘’ ,分别代表马路和房屋。
输入数据保证左上角和右下角都为‘.’
输出格式
一行,如果可以到达,则输入需要行走的最少步数(飘飘神功也记为一步)
如果不可以到达,则输出‘no’
提示
1<=N M <=1000飘飘乎居士——violet hill
迷宫问题,可以穿墙一次。
vis加一个维度,记录是否穿过墙。
bfs越来越有趣了。
//Writer:GhostCai && His Yellow Duck
#include<iostream>
#include<queue>
#include<cstdio>
#include<cstdlib>
#define MAXN 1005
using namespace std;
int n,m;
char a[MAXN][MAXN];
bool vis[MAXN][MAXN][2];
int dx[4]={0,1,0,-1};
int dy[4]={1,0,-1,0};
int read_d(){
int i=0;
char c;
while(c=getchar(),c<'0'||c>'9');
while(c<='9'&&c>='0'){
i=i*10+c-'0';
c=getchar();
}
return i;
}
struct point {
int x,y,step,used;
}node,r;
void bfs(int x,int y){
node.x = x;
node.y = y;
node.step = 0;
node.used = 0;
vis[x][y][0]=1;
queue<point> Q;
Q.push(node);
while(!Q.empty() ){
r=Q.front() ;
Q.pop() ;
if(r.x == m&&r.y == n){
cout<<r.step <<endl;
exit(0);
}
for(int i=0;i<=3;i++){
int nx=r.x + dx[i];
int ny=r.y + dy[i];
if(nx<1||ny<1||nx>m||ny>n) continue;
if(r.x == m&&r.y == n){//没写
cout<<r.step <<endl;
exit(0);
}
if(a[nx][ny]=='.'){
if(vis[nx][ny][r.used ]) continue;
node.x = nx;
node.y = ny;
node.step = r.step + 1;
node.used = r.used ;
vis[nx][ny][r.used ]=1;
Q.push(node);//!!!
}else{
if(r.used ) continue;
node.x = nx;
node.y = ny;
node.step = r.step + 1;
node.used = 1;//发功
vis[nx][ny][1]=1;
Q.push(node);
}
}
}
}
int main(){
char s[1001];
m=read_d();
n=read_d();
for(register int i=1;i<=m;i++){
scanf("%s",s);
for(register int j=0;j<n;j++){
a[i][j+1]=s[j];
}
}
bfs(1,1);
cout<<"no\n";
return 0;
}
[JOY]1143 飘飘乎居士的约会的更多相关文章
- P1143 飘飘乎居士的约会
P1143 飘飘乎居士的约会 时间: 1000ms / 空间: 131072KiB / Java类名: Main 背景 一阵狂风吹过 只听“pong”的一声,飘飘乎居士降落了!!! 描述 又是美妙 ...
- TYVJ1288 飘飘乎居士取能量块 -SilverN
描述 9月21日,今天是pink的生日,飘飘乎居士当然要去别人的领土大闹一番啦! 为了收集更多的能量到pink家大闹,飘飘乎居士准备从后花园中取出自己多年积攒的p个能量块.后花园一共被划分n个地 ...
- tyvj P1517 飘飘乎居士的乌龟(最大流)
P1517 飘飘乎居士的乌龟 时间: 1000ms / 空间: 131072KiB / Java类名: Main 背景 飘飘乎居士养了乌龟.当然,这些乌龟是用来出售赚取利润的. 描述 飘飘乎居士的乌龟 ...
- TYVJ 1288 飘飘乎居士取能量块
背景 9月21日,pink生日:9月22日,lina生日:9月23日,轮到到飘飘乎居士(狂欢吧,(^__^) 嘻嘻--). 描述 9月21日,今天是pink的生日,飘飘乎居士当然要去别人的领土大闹一番 ...
- tyvjP1288 飘飘乎居士取能量块
P1288 飘飘乎居士取能量块 时间: 1000ms / 空间: 131072KiB / Java类名: Main 背景 9月21日,pink生日:9月22日,lina生日:9月23日,轮到到飘飘乎居 ...
- tyvj1468 清理垃圾
背景 聚会结束,留下许多垃圾.Candy:"好多垃圾啊,飘飘乎居士,我们一起处理垃圾吧!" 描述 Candy家里总共有n个垃圾等待处理,每个垃圾对于Candy和飘飘乎居士处 ...
- TYVJ博弈论
一些比较水的博弈论...(为什么都没有用到那什么SG呢....) TYVJ 1140 飘飘乎居士拯救MM 题解: 歌德巴赫猜想 #include <cmath> #include < ...
- 【TYVJ】1467 - 通向聚会的道路(spfa+特殊的技巧)
http://tyvj.cn/Problem_Show.aspx?id=1467 这题我并不是看题解a的.但是确实从题解得到了启发. 一开始我就想到一个正解,设d[i][0]表示i开始走过奇数个点的最 ...
- tyvj1161聚会的名单(trie树)
背景 Background 明天就是candy的生日,candy又会邀请自己的一大堆好友来聚会了!哎!又要累坏飘飘乎居士了!! 描述 Description 明天就是candy的生日.晚上,c ...
随机推荐
- 新建Podfile命令
接下来,你需要建立一个主工程.建立成功以后,再次启动终端, 利用cd命令进入到工程文件夹内,此时需要创建一个特殊的文本文件,命令如下: 命令: touch Podfile 创建 命令: open -e ...
- RPC入门
在校期间大家都写过不少程序,比如写个hello world服务类,然后本地调用下,如下所示.这些程序的特点是服务消费方和服务提供方是本地调用关系. 而一旦踏入公司尤其是大型互联网公司就会发现,公司的系 ...
- java 阻塞队列(转)
转自 http://ifeve.com/java-blocking-queue/ 1. 什么是阻塞队列? 阻塞队列(BlockingQueue)是一个支持两个附加操作的队列.这两个附加的操作是:在队列 ...
- typescript学习笔记(一)----基础类型
1.使用typescript前第一个操作就是全局配置typescript环境 ---------------npm install -g typescript 2.typescript(以下称为ts, ...
- H - F(x)
#include <iostream> #include <algorithm> #include <cstring> #include <cstdio> ...
- python之文件路径截取 & endswith()
文件路径截取: >>> import os >>> path = '/etc/singfor/passwd/sunny/test.log' >>> ...
- [題解]luogu_P1333瑞瑞的木棍(并查集/圖論)
是一道歐拉路的題竟然沒看出來...... 把每種顏色看成一個點,每根木棍看成一個邊,即相同顏色在圖中接好合併成了一個點, 問題轉化為了求是否存在歐拉路 如果用map會超時,所以可以用字典樹實現離散化/ ...
- python 基础(七) 异常处理
异常处理 一.需求 当遇到错误的时候 不让程序停止执行 而是越过错误继续执行 二.主体结构 (抓取所有异常) try: 可能出现异常的代码段 except: 出现异常以后的处理 三.处理特 ...
- 记一下一道关于finally的题
题目: public class Test{ public int add(int a,int b){ try { return a+b; } catch (Exception e) { Syste ...
- spring mvc添加静态资源访问时@Controller无效的解决
web.xml中的url-pattern设置为/,添加mvc:resources访问静态资源时,@Controller无效的问题 web.xml: <servlet> <servle ...