codevs 2059 逃出克隆岛
oi小组的yh酷爱玩魔兽rpg,每天都会在u9搜索最新的rpg地图。
今天,他找到一张名为《逃出克隆岛》的地图,在这张地图中,有一个n行m列的矩阵,矩阵由’Y’,’C’,’#’,’*’,’P’,5种元素组成。’Y’表示yh的出生位置,C表示克隆岛的出口,’#’表示该处不可通过,’*’表示通过该处需要消耗金币cost,’P’表示传送阵,任意两个传送阵之间可以免费互相传送。由于这仅仅是第一关,yh不想浪费太多的体力,聪明的你能帮他算出从’Y’出发到’C’最少需要消耗多少金币吗?当然,如果yh永远无法到达’C’,请输出” screw you!”以表到yh的不满。
第一行两个整数,n,m,表示矩阵有n行m列
接下来为n行m列的矩阵,由’Y’,’C’,’#’,’*’,’P’,组成,含义如题目描述。
输出1行,表示yh需要花费的最小体力(如果无法到达输出”screw you!”)。
【样例输入1】
1 3 3
Y*C
【样例输入2】
1 3 2
Y#C
【样例输入3】
1 5 2
YP#PC
【样例输出1】
3
【样例输出2】
screw you!
【样例输出3】
0
【数据范围】
对于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 逃出克隆岛的更多相关文章
- 逃出克隆岛 (codevs 2059)
较普通的走迷宫的题 传送门 :codevs 2059 逃出克隆岛 思路 :BFS 即可 PS :传送门 不必重复使用 #include <iostream> #include < ...
- AC日记——逃出克隆岛 (bfs)
2059 逃出克隆岛 时间限制: 1 s 空间限制: 128000 KB 题目等级 : 黄金 Gold 题解 题目描述 Description oi小组的yh酷爱玩魔兽rpg,每天都 ...
- codevs2059逃出克隆岛(传送门bfs)
/* 和普通的迷宫问题类似只是多了一个叫传送门的东西 对于传送门的处理: 每当跑到传送门就把其余所有传送门周围的点都入队 传送门之间不花费时间并且从不是传送门的点走到传送门 也不花费时间花费时间的(好 ...
- 使用 trash-cli 逃出 rm 命令误删除重要文件的阴影
今天是一个难忘的日子,当时本来想清除我们公司网站cms目录下面一些cdn推送网页后残留的垃圾文件,结果在执行rm -rf conten* 时打成了rm -rf conten *结果就悲剧了.cms目录 ...
- 西南民族大学第十二届程序设计竞赛(同步赛) A.逃出机房 (bfs)
题意:有来两个人A和B,A追B,A和B每次向上下左右移动一个单位,一共有两扇门,问A是否可以追上B(在门口追上也算合法). 题解:当时看题意说在门口也算?就觉得是判断两个人到门口的时间,对他们两个人分 ...
- 最短路【洛谷P3393】 逃离僵尸岛
P3393 逃离僵尸岛 题目描述 小a住的国家被僵尸侵略了!小a打算逃离到该国唯一的国际空港逃出这个国家. 该国有N个城市,城市之间有道路相连.一共有M条双向道路.保证没有自环和重边. K个城市已经被 ...
- codevs 1144 守望者的逃离
传送门 1144 守望者的逃离 2007年NOIP全国联赛普及组 时间限制: 1 s 空间限制: 128000 KB 题目等级 : 黄金 Gold 题解 题目描述 Description 恶 ...
- luogu P3393 逃离僵尸岛-搜索剪枝+spfa
P3393 逃离僵尸岛 题目描述 小a住的国家被僵尸侵略了!小a打算逃离到该国唯一的国际空港逃出这个国家. 该国有N个城市,城市之间有道路相连.一共有M条双向道路.保证没有自环和重边. K个城市已经被 ...
- 洛谷⑨月月赛Round2 P3393逃离僵尸岛[最短路]
题目描述 小a住的国家被僵尸侵略了!小a打算逃离到该国唯一的国际空港逃出这个国家. 该国有N个城市,城市之间有道路相连.一共有M条双向道路.保证没有自环和重边. K个城市已经被僵尸控制了,如果贸然闯入 ...
随机推荐
- 文本编辑器[notepad++] :一些快捷键
资源来自网络收集. Ctrl+C 复制 Ctrl+X 剪切 Ctrl+V 粘贴 Ctrl+Z 撤消 Ctrl+Y 恢复 Ctrl+A 全选 Ctrl+F 键查找对话框启动 Ctrl+H 查找/替换对话 ...
- python zlib字符串压缩
在做网络程序时,可以对字符串进行压缩来节省带宽 项目中用到 {"compress": <压缩标记>, "result":[[设备类型.设备ID, 设 ...
- myeclipse 重新关联项目和svn
有时候重装了svn或重新定义了WorkSpaces,原项目和svn没关联了 那么 右击要提交的项目 在弹出的菜单依次:Team -->share project 在弹出的对话框里填入SVN的地址 ...
- Perfect项目快速上手
1.在您从Swift.org(英文版)完成Swift 4.0 toolchain工具集安装之后,请打开一个命令行终端并输入命令 swift --version Apple Swift version ...
- CSS小技巧收藏
居中对齐 很多时候我们需要把一个元素在其父级容器里水平.垂直居中对齐.以下我列出了常用的几种方法: 1.在知道子元素宽度与高度的情况下进行居中,采用位置定位:absolute + margin .pa ...
- 运行程序时抛出异常“找不到请求的 .Net Framework Data Provider。可能没有安装。”
方法1 如果系统未安装Oracle Data Provider 请参考方法2 右键单击项目,选择属性,切换到“生成”选项卡,将目标平台改为 Any CPU,并勾选“首选32位” 方法2 安装 Orac ...
- OpenGL Geometry Shader
http://blog.csdn.net/bugrunner/article/details/5455324 Geometry Shader可以处理Vertex Shader和Fragment Sha ...
- spark sql 的metastore 对接 postgresql
本教程记录 spark 1.3.1 版本的thriftserver 的metastore 对接 postgresql postgresql 的编译,参考:http://www.cnblogs.com/ ...
- Windows个人常用软件推荐
一.必装软件 浏览器:Google chrome Google Chrome是一款可让您更快速.轻松且安全地使用网络的浏览器,它的设计超级简洁,使用起来更加方便,支持多标签浏览,同时也支持扩展插件.下 ...
- F - Balanced Number
#include <iostream> #include <algorithm> #include <cstring> #include <cstdio> ...