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个城市已经被僵尸控制了,如果贸然闯入 ...
随机推荐
- 【原】RHEL6.0企业版安装
作者:david_zhang@sh [转载时请以超链接形式标明文章] 链接:http://www.cnblogs.com/david-zhang-index/p/4166846.html 本文适用RH ...
- Eigen::Map
http://cherishlc.iteye.com/blog/2116800 Map类 是 矩阵库Eigen中用来将内存数据 映射为 任意形状的矩阵的类.
- c++拷贝函数详解(转)
一. 什么是拷贝构造函数 首先对于普通类型的对象来说,它们之间的复制是很简单的,例如 int a = 100; int b = a; 而类对象与普通对象不同,类对象内部结构一般较为复杂,存在各种成员变 ...
- oracle创建用户空间、导出、导入dmp备份文件方法
导入数据需要注意的事项 1.创建一个用户对应一个表空间. 2.创建的用户和表空间一定要与bmp文件的用户和表空间一致. 3.导入的命令是在CMD下输入的 不是在SQL plus输入的. 4.可以用PL ...
- 洛谷 - P3377 - 【模板】左偏树(可并堆) - 左偏树 - 并查集
https://www.luogu.org/problemnew/show/P3377 左偏树+并查集 左偏树维护两个可合并的堆,并查集维护两个堆元素合并后可以找到正确的树根. 关键点在于删除一个堆的 ...
- lightoj 1085【离散化+树状数组】
题意: 求所有的上升子序列种数: 思路: 我想先离散化一下,然后用树状数组维护一下. 最终答案就是sum(n) ? 卧槽,好像是:然后就过了.. #include <bits/stdc++.h& ...
- uoj #210. 【UER #6】寻找罪犯【2-SAT】
首先最直观的,列一排是罪犯一排不是罪犯,对于一个条件u说v(0是1否)f罪犯,如果u不是,那么vf罪犯:如果u是,枚举他说谎的一条wg罪犯,令w(g^1)罪犯连其他条的vf 但是这样有个电度数方,会炸 ...
- 一个Java语言所写的shop网站框架明细
核心框架Spring Framework :作为一个优秀的开源框架,是为了解决企业应用程序开发复杂性而创建的.框架的主要优势之一就是其分层架构,分层架构允许您选择使用哪一个组件,同时为 J2EE 应用 ...
- bzoj3196:Tyvj1730二逼平衡树
传送门 暴力啊,直接树套树上啊 线段树套splay,卡卡常就直接A了 代码: #include<cstdio> #include<iostream> #include<a ...
- 洛谷P4095||bzoj3163 [HEOI2013]Eden 的新背包问题
https://www.luogu.org/problemnew/show/P4095 不太会.. 网上有神奇的做法: 第一种其实是暴力(复杂度3e8...)然而可以A.考虑多重背包,发现没有办法快速 ...