时间限制: 1 s
 空间限制: 128000 KB
 题目等级 : 黄金 Gold
题目描述 Description

oi小组的yh酷爱玩魔兽rpg,每天都会在u9搜索最新的rpg地图。

今天,他找到一张名为《逃出克隆岛》的地图,在这张地图中,有一个n行m列的矩阵,矩阵由’Y’,’C’,’#’,’*’,’P’,5种元素组成。’Y’表示yh的出生位置,C表示克隆岛的出口,’#’表示该处不可通过,’*’表示通过该处需要消耗金币cost,’P’表示传送阵,任意两个传送阵之间可以免费互相传送。由于这仅仅是第一关,yh不想浪费太多的体力,聪明的你能帮他算出从’Y’出发到’C’最少需要消耗多少金币吗?当然,如果yh永远无法到达’C’,请输出” screw you!”以表到yh的不满。

输入描述 Input Description

第一行两个整数,n,m,表示矩阵有n行m列

接下来为n行m列的矩阵,由’Y’,’C’,’#’,’*’,’P’,组成,含义如题目描述。

输出描述 Output Description

输出1行,表示yh需要花费的最小体力(如果无法到达输出”screw you!”)。

样例输入 Sample Input

【样例输入1】

1 3 3

Y*C

【样例输入2】

1 3 2

Y#C

【样例输入3】

1 5 2

YP#PC

样例输出 Sample Output

【样例输出1】

3

【样例输出2】

screw you!

【样例输出3】

0

数据范围及提示 Data Size & Hint

【数据范围】

对于100%的数据,n*m≤5000,传送阵’P’的数量≤500

BFS

屠龙宝刀点击就送

#include <iostream>
#include <cstring>
#include <cstdlib>
#include <cstdio> using namespace std;
char tx[][];
bool csm[][],vis[][];
int cost,start_x,start_y,over_x,over_y,n,m,fx[]={,-,,},fy[]={,,-,};
void print(int k)
{
printf("%d",k);
exit();
}
void bfs(int sx,int sy)
{
int f[][],l=,r=;
f[++r][]=sx;
f[r][]=sy;
f[r][]=;
do
{
int now_x=f[++l][],now_y=f[l][];
for(int j=;j<;++j)
{
int to_x=now_x+fx[j],to_y=now_y+fy[j];
if(to_x==over_x&&to_y==over_y)
print(f[l][]);
if(to_x>=&&to_x<=n&&to_y>=&&to_y<=m&&tx[to_x][to_y]!='#'&&vis[to_x][to_y]==)
{
if(csm[to_x][to_y]==)
{
f[++r][]=to_x;
f[r][]=to_y;
f[r][]=f[l][];
csm[to_x][to_y]=;
for(int i=;i<=n;++i)
{
for(int k=;k<=m;++k)
{
if(csm[i][k]==)
{
csm[i][k]=;
f[++r][]=i;
f[r][]=k;
f[r][]=f[l][];
}
}
}
}
else
{
vis[to_x][to_y]=;
f[++r][]=to_x;
f[r][]=to_y;
if(tx[to_x][to_y]=='*') f[r][]=f[l][]+cost;
else f[r][]=f[l][];
}
}
} }while(l<=r);
}
int main()
{
scanf("%d%d%d",&n,&m,&cost);
for(int i=;i<=n;++i)
{
for(int j=;j<=m;++j)
{
cin>>tx[i][j];
if(tx[i][j]=='P') csm[i][j]=;
else if(tx[i][j]=='Y') start_x=i,start_y=j;
else if(tx[i][j]=='C') over_x=i,over_y=j;
}
}
bfs(start_x,start_y);
printf("screw you!");
return ;
}

codevs 2059 逃出克隆岛的更多相关文章

  1. 逃出克隆岛 (codevs 2059)

    较普通的走迷宫的题 传送门 :codevs 2059 逃出克隆岛 思路 :BFS 即可    PS :传送门 不必重复使用 #include <iostream> #include < ...

  2. AC日记——逃出克隆岛 (bfs)

    2059 逃出克隆岛  时间限制: 1 s  空间限制: 128000 KB  题目等级 : 黄金 Gold 题解       题目描述 Description oi小组的yh酷爱玩魔兽rpg,每天都 ...

  3. codevs2059逃出克隆岛(传送门bfs)

    /* 和普通的迷宫问题类似只是多了一个叫传送门的东西 对于传送门的处理: 每当跑到传送门就把其余所有传送门周围的点都入队 传送门之间不花费时间并且从不是传送门的点走到传送门 也不花费时间花费时间的(好 ...

  4. 使用 trash-cli 逃出 rm 命令误删除重要文件的阴影

    今天是一个难忘的日子,当时本来想清除我们公司网站cms目录下面一些cdn推送网页后残留的垃圾文件,结果在执行rm -rf conten* 时打成了rm -rf conten *结果就悲剧了.cms目录 ...

  5. 西南民族大学第十二届程序设计竞赛(同步赛) A.逃出机房 (bfs)

    题意:有来两个人A和B,A追B,A和B每次向上下左右移动一个单位,一共有两扇门,问A是否可以追上B(在门口追上也算合法). 题解:当时看题意说在门口也算?就觉得是判断两个人到门口的时间,对他们两个人分 ...

  6. 最短路【洛谷P3393】 逃离僵尸岛

    P3393 逃离僵尸岛 题目描述 小a住的国家被僵尸侵略了!小a打算逃离到该国唯一的国际空港逃出这个国家. 该国有N个城市,城市之间有道路相连.一共有M条双向道路.保证没有自环和重边. K个城市已经被 ...

  7. codevs 1144 守望者的逃离

    传送门 1144 守望者的逃离 2007年NOIP全国联赛普及组  时间限制: 1 s  空间限制: 128000 KB  题目等级 : 黄金 Gold 题解   题目描述 Description 恶 ...

  8. luogu P3393 逃离僵尸岛-搜索剪枝+spfa

    P3393 逃离僵尸岛 题目描述 小a住的国家被僵尸侵略了!小a打算逃离到该国唯一的国际空港逃出这个国家. 该国有N个城市,城市之间有道路相连.一共有M条双向道路.保证没有自环和重边. K个城市已经被 ...

  9. 洛谷⑨月月赛Round2 P3393逃离僵尸岛[最短路]

    题目描述 小a住的国家被僵尸侵略了!小a打算逃离到该国唯一的国际空港逃出这个国家. 该国有N个城市,城市之间有道路相连.一共有M条双向道路.保证没有自环和重边. K个城市已经被僵尸控制了,如果贸然闯入 ...

随机推荐

  1. jQuery EasyUI API 中文文档 - Tree树使用介绍

    用 $.fn.tree.defaults 重写了 defaults. 依赖 draggable droppable 用法 Tree 能在 <ul> 元素里定义,此标记可以定义为叶节点和子节 ...

  2. Eclipse 安装Maven插件

    这个好: http://www.iteye.com/topic/1123225 其他: 1先安装subeclipse插件就是svn svn - http://subclipse.tigris.org/ ...

  3. jquery table表格 获取选中的某一行和某一列的值

    table class="table table-hover" id="test123"> <tr> <th width="4 ...

  4. E20181001-ts

    decorate vt. 装饰; 点缀; 粉刷; 授予(某人)勋章  vi. 装饰; 布置;

  5. Lightoj 1147【DP】

    题意: 把n个人分成两部分,要你怎么分使得两部分尽可能相等: 思路: 如果我们把一部分人的重量达到离sum/2最近,那就一定行啊 其实就是一条棒,两种不同的棒去拼接成一条棒,然后最好就是离mid最近, ...

  6. 异步编程(AsyncCallback委托,IAsyncResult接口,BeginInvoke方法,EndInvoke方法的使用小总结)

    http://www.cnblogs.com/panjun-Donet/archive/2009/03/03/1284700.html 让我们来看看同步异步的区别: 同步方法调用在程序继续执行之前需要 ...

  7. 织梦cms 应急响应 修复建议

    通过分析log日志,可以知道攻击者的IP 攻击时间 和具体操作 本片文章为内网测试,通过分析日志,进行复现攻击流程,同时对网站的后门给予修复建议 通过分析日志可以知道,攻击者使用了扫描工具进行网站扫描 ...

  8. windows 修改鼠标滚轮自然滚动

    在mac 上玩习惯了,使用windows 时的鼠标实在觉得别扭,在网上百度了一下,找到一个方法,这里记录一下 1 打开windows 的控制面板,点击“硬件和声音” 2 点击“鼠标” 3 然后点击上面 ...

  9. GitHub使用方法(初级)

    [初识Github] Git 是一个分布式的版本控制系统,最初由Linus Torvalds编写,用作Linux内核代码的管理.在推出后,Git在其它项目中也取得了很大成功,尤其是在Ruby社区中.目 ...

  10. 掌握MySQL数据库这些优化技巧,事半功倍!

    一个成熟的数据库架构并不是一开始设计就具备高可用.高伸缩等特性的,它是随着用户量的增加,基础架构才逐渐完善.这篇文章主要谈谈MySQL数据库在发展周期中所面临的问题及优化方案,暂且抛开前端应用不说,大 ...