NYOJ 1100-WAJUEJI which home strong!【bfs】

WAJUEJI which home strong!

时间限制:1000 ms  |  内存限制:65535 KB

难度:2

描述

在一个山沟里,姐弟俩同时考上了大学。但由于家里拮据,所以这并不是什么好消息。父亲对孩子说:我就是砸锅卖铁也要把你们姐俩供出来。 当时的姐姐已经决定放弃上学的机会。 没想到第二天天还没亮,弟弟就偷偷带著几件破衣服和几个乾巴馒头走了,在姐姐枕边留下一个纸条: 姐,你别愁了,考上大学不容易,我出去打工供你。弟。 姐姐握著那张字条,趴在炕上,失声痛哭。 那一年,弟弟17岁,姐姐20岁。 姐姐用父亲满村子借的钱和弟弟在工地裏搬水泥挣的钱终於读到了大三。 一天姐姐正在寝室里看书,同学跑进来对姐姐说,有个老乡在找你。姐姐很纳闷,走出去后,远远地看见弟弟,穿著满身是水泥和沙子的工作服。姐姐说,你怎么和我同学说你是我老乡啊? 他笑著说,你看我穿的这样,说是你弟,你同学还不笑话你? 姐姐鼻子一酸,眼泪就落了下来。弟弟赶忙为姐姐擦掉眼泪,说:姐,你别哭,我这次来是想让你帮我打听一下,学挖掘机哪家强?

在你的帮助下,弟弟踏上了去蓝翔的路。

那么问题就来了。

输入
第一个数T,T组测试数据。

两个数 n, m; ( 0< n , m <= 100 ) 表示一个h行m列的二维地图。

接下来n行每行m 个字符。

‘s’ 表示弟弟目前所在位置。

‘# ’表示此处为一座山。为了节省体力,不从此处通行。

从‘A’-‘Z’表示各地的经济水平,对应1-26,路过对应字符的地区需要交对应的生活费。

‘l’表示蓝翔技校的所在地。

s 与 l 均为小写字母。

弟弟只能走四个方向。

输出
输出一个数表示弟弟到达蓝翔需要的生活费最小是多少。

如果不能到达,输出 -1。

样例输入
3
3 5
#sVGF
A##ZA
lCDBC
3 3
sAB
ABS
ABl
3 3
s#B
###
ABl
样例输出
48
4
-1
来源
流年
上传者
ACM_安鹏程

注意需要标记。

#include<cmath>
#include<cstdio>
#include<cstring>
#include<algorithm>
#include<queue>
using namespace std;
char map[120][120];
int vis[120][120];
int n,m;
typedef struct node
{
	int x,y,t;
	friend bool operator<(node a,node b)
	{
		return a.t>b.t;
	}
};
int kx,ky;
int dx[]={0,0,-1,1};
int dy[]={1,-1,0,0};
bool JJ(int xx,int yy)
{
	if(vis[xx][yy]==0&&xx>=0&&xx<n&&yy>=0&&yy<m&&map[xx][yy]!='#')
	{
		return 1;
	}
	return 0;
}
void wcn()
{
	node aa;
	aa.x=kx,aa.y=ky,aa.t=0;
	priority_queue<node >q;
	q.push(aa);
	while(!q.empty())
	{
		node wc;
		wc=q.top();
		q.pop();
		if(map[wc.x][wc.y]=='l')
		{
			printf("%d\n",wc.t);
			return ;
		}
		for(int i=0;i<4;i++)
		{
			int xx=wc.x+dx[i];
			int yy=wc.y+dy[i];
			if(JJ(xx,yy))
			{
				vis[xx][yy]=1;
				node cc;
				cc.x=xx;
				cc.y=yy;
				if(map[xx][yy]>='A'&&map[xx][yy]<='Z')
				cc.t=wc.t+(map[xx][yy]-'A'+1);
				else
				cc.t=wc.t;
				q.push(cc);
			}
		}
	}
	printf("-1\n");
}
int main()
{
	int t;
	scanf("%d",&t);
	while(t--)
	{
		memset(vis,0,sizeof(vis));
		scanf("%d%d",&n,&m);
		for(int i=0;i<n;i++)
		{
			scanf("%s",map[i]);
			for(int j=0;j<m;j++)
			{
				if(map[i][j]=='s')
				{
					kx=i;
					ky=j;
					//printf("%d %d\n",kx,ky);
				}
			}
		}
		wcn();
	}
	return 0;
}
时间: 2024-10-05 06:26:18

NYOJ 1100-WAJUEJI which home strong!【bfs】的相关文章

NYOJ1100 WAJUEJI which home strong!【BFS】

WAJUEJI which home strong! 时间限制:1000 ms  |  内存限制:65535 KB 难度:2 描述 在一个山沟里,姐弟俩同时考上了大学.但由于家里拮据,所以这并不是什么好消息.父亲对孩子说:我就是砸锅卖铁也要把你们姐俩供出来. 当时的姐姐已经决定放弃上学的机会. 没想到第二天天还没亮,弟弟就偷偷带著几件破衣服和几个乾巴馒头走了,在姐姐枕边留下一个纸条: 姐,你别愁了,考上大学不容易,我出去打工供你.弟. 姐姐握著那张字条,趴在炕上,失声痛哭. 那一年,弟弟17岁,

nyoj 1100 WAJUEJI which home strong!

WAJUEJI which home strong! 时间限制:1000 ms  |  内存限制:65535 KB 难度:2 描述 在一个山沟里,姐弟俩同时考上了大学.但由于家里拮据,所以这并不是什么好消息.父亲对孩子说:我就是砸锅卖铁也要把你们姐俩供出来. 当时的姐姐已经决定放弃上学的机会. 没想到第二天天还没亮,弟弟就偷偷带著几件破衣服和几个乾巴馒头走了,在姐姐枕边留下一个纸条: 姐,你别愁了,考上大学不容易,我出去打工供你.弟. 姐姐握著那张字条,趴在炕上,失声痛哭. 那一年,弟弟17岁,

NY 1100 WAJUEJI which home strong!

WAJUEJI which home strong! 时间限制:1000 ms  |  内存限制:65535 KB 难度:2 描述 在一个山沟里,姐弟俩同时考上了大学.但由于家里拮据,所以这并不是什么好消息.父亲对孩子说:我就是砸锅卖铁也要把你们姐俩供出来. 当时的姐姐已经决定放弃上学的机会. 没想到第二天天还没亮,弟弟就偷偷带著几件破衣服和几个乾巴馒头走了,在姐姐枕边留下一个纸条: 姐,你别愁了,考上大学不容易,我出去打工供你.弟. 姐姐握著那张字条,趴在炕上,失声痛哭. 那一年,弟弟17岁,

nyoj 82 迷宫寻宝(一) 【BFS】

迷宫寻宝(一) 时间限制:1000 ms  |  内存限制:65535 KB 难度:4 描述 一个叫ACM的寻宝者找到了一个藏宝图,它根据藏宝图找到了一个迷宫,这是一个很特别的迷宫,迷宫里有N个编过号的门(N<=5),它们分别被编号为A,B,C,D,E.为了找到宝藏,ACM必须打开门,但是,开门之前必须在迷宫里找到这个打开这个门所需的所有钥匙(每个门都至少有一把钥匙),例如:现在A门有三把钥匙,ACM就必须找全三把钥匙才能打开A门.现在请你编写一个程序来告诉ACM,他能不能顺利的得到宝藏. 输入

WAJUEJI which home strong!

WAJUEJI which home strong! 时间限制:1000 ms  |  内存限制:65535 KB 难度:2 描述 在一个山沟里,姐弟俩同时考上了大学.但由于家里拮据,所以这并不是什么好消息.父亲对孩子说:我就是砸锅卖铁也要把你们姐俩供出来. 当时的姐姐已经决定放弃上学的机会. 没想到第二天天还没亮,弟弟就偷偷带著几件破衣服和几个乾巴馒头走了,在姐姐枕边留下一个纸条: 姐,你别愁了,考上大学不容易,我出去打工供你.弟. 姐姐握著那张字条,趴在炕上,失声痛哭. 那一年,弟弟17岁,

HDU 1253 胜利大逃亡 NYOJ 523【BFS】

胜利大逃亡 Time Limit: 4000/2000 MS (Java/Others)    Memory Limit: 65536/32768 K (Java/Others) Total Submission(s): 24608    Accepted Submission(s): 9427 Problem Description Ignatius被魔王抓走了,有一天魔王出差去了,这可是Ignatius逃亡的好机会. 魔王住在一个城堡里,城堡是一个A*B*C的立方体,可以被表示成A个B*C的

NYOJ 284 坦克大战 【BFS】+【优先队列】

坦克大战 时间限制:1000 ms  |  内存限制:65535 KB 难度:3 描述 Many of us had played the game "Battle city" in our childhood, and some people (like me) even often play it on computer now. What we are discussing is a simple edition of this game. Given a map that co

老板来一杯热狗!【搞笑】哈哈哈哈!都要笑出腹肌

悟空的外婆 为了拍个天鹅,容易么我. 见过遛狗,那你见过遛鱼吗? 天啊,,,,,, 啊呀,没热水了! 到底是你遛我还是我遛你? 好讨厌哦,老是要弄人家笑. 外卖服务水准超五星 冤枉啊,我真的不是故意要长成这样的! 好想呕吐,我是不是有了? 中国电信的强力胶布,碉堡了! 不要吵,哥在思考问题. 悟空的外婆 2014年性感彩妆发布会 唉,最近又胖了,好伤森... 姐这样的贵妇气质,你怎么会懂. 便于争分夺秒 这个表情难度好大 这个画家是想等着挨揍么 真心不想要了 脖子长的好处 老大叫"复制"

NYOJ 58 最少步数 【BFS】

题意:不解释. 策略:如题: 这道题可以用深搜也可以用广搜,我以前写的是用的深搜,最近在学广搜,就拿这道题来练练手. 代码: #include<stdio.h> #include<string.h> #include<queue> using std::queue; bool vis[20][20]; const int dir[4][2] = {1, 0, -1, 0, 0, 1, 0, -1};//方向 int map[9][9] = { 1,1,1,1,1,1,1