题目描述

又是美妙的一天,这天飘飘乎居士要和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 飘飘乎居士的约会的更多相关文章

  1. P1143 飘飘乎居士的约会

    P1143 飘飘乎居士的约会 时间: 1000ms / 空间: 131072KiB / Java类名: Main 背景  一阵狂风吹过  只听“pong”的一声,飘飘乎居士降落了!!! 描述 又是美妙 ...

  2. TYVJ1288 飘飘乎居士取能量块 -SilverN

    描述   9月21日,今天是pink的生日,飘飘乎居士当然要去别人的领土大闹一番啦!  为了收集更多的能量到pink家大闹,飘飘乎居士准备从后花园中取出自己多年积攒的p个能量块.后花园一共被划分n个地 ...

  3. tyvj P1517 飘飘乎居士的乌龟(最大流)

    P1517 飘飘乎居士的乌龟 时间: 1000ms / 空间: 131072KiB / Java类名: Main 背景 飘飘乎居士养了乌龟.当然,这些乌龟是用来出售赚取利润的. 描述 飘飘乎居士的乌龟 ...

  4. TYVJ 1288 飘飘乎居士取能量块

    背景 9月21日,pink生日:9月22日,lina生日:9月23日,轮到到飘飘乎居士(狂欢吧,(^__^) 嘻嘻--). 描述 9月21日,今天是pink的生日,飘飘乎居士当然要去别人的领土大闹一番 ...

  5. tyvjP1288 飘飘乎居士取能量块

    P1288 飘飘乎居士取能量块 时间: 1000ms / 空间: 131072KiB / Java类名: Main 背景 9月21日,pink生日:9月22日,lina生日:9月23日,轮到到飘飘乎居 ...

  6. tyvj1468 清理垃圾

    背景 聚会结束,留下许多垃圾.Candy:"好多垃圾啊,飘飘乎居士,我们一起处理垃圾吧!" 描述     Candy家里总共有n个垃圾等待处理,每个垃圾对于Candy和飘飘乎居士处 ...

  7. TYVJ博弈论

    一些比较水的博弈论...(为什么都没有用到那什么SG呢....) TYVJ 1140  飘飘乎居士拯救MM 题解: 歌德巴赫猜想 #include <cmath> #include < ...

  8. 【TYVJ】1467 - 通向聚会的道路(spfa+特殊的技巧)

    http://tyvj.cn/Problem_Show.aspx?id=1467 这题我并不是看题解a的.但是确实从题解得到了启发. 一开始我就想到一个正解,设d[i][0]表示i开始走过奇数个点的最 ...

  9. tyvj1161聚会的名单(trie树)

    背景 Background 明天就是candy的生日,candy又会邀请自己的一大堆好友来聚会了!哎!又要累坏飘飘乎居士了!! 描述 Description     明天就是candy的生日.晚上,c ...

随机推荐

  1. 编译keepalived 方法

    作者的环境: redhat 6.5 64 位版 在编译keepalived 前,需要提前给环境安装两个依赖包--zlib和openssl 编译 zlib 库 参考作者之前的博客 http://www. ...

  2. ADO winform注册

    前面我们了解了如何实现登录,现在.我们来讨论如何实现注册功能,注册其实就是 通过程序,往数据库中新增数据.首先我们同样连接到数据库,同上页一样创建连接,然后 打开连接.之后我们就要去获取我们输入到文本 ...

  3. react native 安卓打包--mac环境,如果打包不成功可注意下my-release-key.keystore的位置关系(绝对路径)

    // my-release-key.keystore和my-key-alias都是可修改的名称 1.生成签名密钥(keytool -genkey -v -keystore my-release-key ...

  4. Jmeter(二十三)稳定性测试后的波形图

    jmeter-plugins.org 这个网站为 JMeter 提供了一些增强型功能的插件,使用起来就像 Eclipse 装插件一样,完全做到了插件的可插拔特性.本文简要介绍如何使用这些插件让你的 J ...

  5. 在b站做计网实验 - 抓包/get/post

    前言 这篇博文是一个小实验,用python发送get/post请求,其中用到cookie登录bilibili网站并修改个人信息. 抓包 对HTTP应用而言,用浏览器自带的插件可以很方便做到抓包,比如c ...

  6. python学习之邮件

    分类smtp邮件 html邮件,带附件的邮件. 一 STTP邮件:设置SMTP代理机构,发送人的邮箱和密码,收件人的邮箱地址(email模块):接收端,发送(smtplib模块).SMTP(smtp_ ...

  7. odoo filter 日期

    <!--日期--> <filter name="before_twodays" string="前天" domain="[('dat ...

  8. python 多继承(新式类) 三

    深入super 一下内容引用自:http://www.cnblogs.com/lovemo1314/archive/2011/05/03/2035005.html,写的挺好的. 代码段3 class ...

  9. phpdesigner 配置SVN

  10. jsp get与post请求乱码问题

    乱码问题01:<%reques.setCharacterEncoding("utf-8");%> 02:get请求乱码 001.:String 编码之后的字符串 = n ...