大雨应经下了几天雨,却还是没有停的样子。土豪CCY刚从外地赚完1e元回来,知道不久除了自己别墅,其他的地方都将会被洪水淹没。

CCY所在的城市可以用一个N*M(N,M<=50)的地图表示,地图上有五种符号:“. * X D S”。其中“X”表示石头,水和人都不能从上面经过。“.”表示平原,CCY和洪水都可以经过。“*”表示洪水开始地方(可能有多个地方开始发生洪水)。“D”表示CCY的别墅。“S”表示CCY现在的位置。

CCY每分钟可以向相邻位置移动,而洪水将会在CCY移动之后把相邻的没有的土地淹没(从已淹没的土地)。

求CCY回到别墅的最少时间。如果聪哥回不了家,就很可能会被淹死,那么他就要膜拜黄金大神涨RP来呼叫直升飞机,所以输出“ORZ hzwer!!!”。

输入文件 sliker.in

输出文件 sliker.out

Input

3 3

D.*

.S.

Output

3

Input

3 3

D.*

..S

Output

ORZ hzwer!!!

Input

3 6

D…*.

.X.X..

....S.

Output

6

 #include<iostream>
#include<queue>
#include<cstring>
using namespace std; const int INF=0x7f7f7f7f; int n,m,sx,sy,tx,ty;
char map[][];
int T[][];
int xx[]={-,,,};
int yy[]={,,,-};
char ch[]; struct data{int x,y,t;};
void bfs1()
{
queue<data> Q;
data p;
for(int i=;i<=n;i++)
for(int j=;j<=m;j++)
if(map[i][j]=='*')
{
p=(data){i,j};
T[i][j]=;
Q.push(p);
}
while(!Q.empty())
{
p=Q.front();Q.pop();
for(int i=;i<;i++)
{
int x=p.x+xx[i],y=p.y+yy[i];
if(x<||x>n||y<||y>m||T[x][y]!=INF) continue;
T[x][y]=T[p.x][p.y]+;
Q.push((data){x,y});
}
}
} void bfs2()
{
bool vis[][],flag=;
memset(vis,,sizeof(vis));
queue<data> Q;
data p={sx,sy,};vis[sx][sy]=;
Q.push(p);
while(!Q.empty())
{
p=Q.front();Q.pop();
if(p.x==tx&&p.y==ty) {flag=;break;}
for(int i=;i<;i++)
{
int x=p.x+xx[i],y=p.y+yy[i];
if(x<||x>n||y<||y>m||T[x][y]<=p.t+||vis[x][y]) continue;
vis[x][y]=;
Q.push((data){x,y,p.t+});
}
}
if(flag) printf("%d\n",p.t);
else printf("ORZ hzwer!!!\n");
} int main()
{
scanf("%d %d",&n,&m);
memset(T,0x7f,sizeof(T));
for(int i=;i<=n;i++)
{
scanf("%s",ch+);
for(int j=;j<=m;j++)
{
map[i][j]=ch[j];
switch(map[i][j])
{
case 'S':
sx=i,sy=j;
break;
case 'D':
tx=i,ty=j;
T[i][j]=INF-;
break;
case 'X':
T[i][j]=;
break;
}
}
}
bfs1();
bfs2();
return ;
}

双重bfs

最新文章

  1. Entity Framework 教程——创建实体数据模型
  2. Not Hello World
  3. jsonP跨域调用
  4. UIButton的titleLabe setAttributeSting 首次不起作用
  5. 字体和壁纸合并后再更改壁纸--《用delphi开发共享软件》-15.2桌面提示器
  6. changepassword.c 0.9:一个通过WEB界面更改LINUX用户密码的程序
  7. python 优雅的使用正则表达式 ~ 2
  8. hdu-5680 zxa and set(水题)
  9. 表单插件——form
  10. CodeForces 707B Bakery (水题,暴力,贪心)
  11. 最全java的读写操作(转载)
  12. Python文件处理之文件读取方式(二)
  13. LeetCode-两数之和
  14. 神经网络常用的Numpy功能笔记
  15. 解决Protobuf生成的C#代码命名不规范问题
  16. kubernetes1.13之后的kubeadm init config
  17. 推荐5款简洁美观的Hexo主题
  18. mini2440裸机试炼之—RTC闹钟中断,节拍中断
  19. IIS的应用程序池优化方法
  20. jwt 的使用

热门文章

  1. Linux服务器上的禅道迁移及升级方法(Linux to Linux)
  2. 剑指Offer的学习笔记(C#篇)-- 栈的压入、弹出序列
  3. Laravel Model 利用 Macroable 为数据模型添加宏能力
  4. PJzhang:搜索引擎高级语法与渗透测试
  5. C 语言实例 - 计算自然数的和
  6. 3分钟简单了解 prototype 和 __proto__
  7. 本机和虚拟机互联 设置静态IP vmware 虚拟网络 桥接 NAT 仅主机 自定义
  8. 转Keil 中使用 STM32F4xx 硬件浮点单元
  9. 在ubuntu 12.04上安装tomcat 7.40
  10. 前端html与css学习笔记总结篇(超详细)