Luogu P2298 Mzc和男家丁的游戏

Mzc和男家丁的游戏

题目背景

mzc与djn的第二弹。

题目描述

mzc家很有钱(开玩笑),他家有n个男家丁(做过上一弹的都知道)。他把她们召集在了一起,他们决定玩捉迷藏。现在mzc要来寻找他的男家丁,大家一起来帮忙啊!

由于男家丁数目不多,再加上mzc大大的找人【laopo】水平很好,所以一次只需要找一个男家丁。

输入输出格式

输入格式:

第一行有两个数n,m,表示有n行m列供男家丁躲藏,

之后n行m列的矩阵,‘m‘表示mzc,‘d’表示男家丁,‘#’表示不能走,‘.‘表示空地。

输出格式:

一行,若有解:一个数sum,表示找到男家丁的最短移动次数。

若无解:输出“No Way!”。

输入输出样例

输入样例#1:

5 6
.#..#.
....#.
d.....
#####.
m.....

  

输出样例#1:

12

  

说明

3=<M,n<=2000

由于mzc大大十分着急,所以他只能等待1S。



好水啊。我不想写了,大大们直接看代码吧。>_<

#include <iostream>
#include <cstring>
#include <cstdio>
#include <queue>

using namespace std;

int n, m, sx, sy, ex, ey;

char map[2003][2003]; bool vis[2003][2003], mark = false;

struct node{int x, y, tot;};

queue<node> P;

int dx[10] = {1, 0, -1, 0};
int dy[10] = {0, 1, 0, -1};

void bfs(node now) {
	while(!P.empty()) {
		now = P.front();
		P.pop();
		int x = now.x, y = now.y, tot = now.tot;
		if(x == ex&&y == ey) {printf("%d\n", tot); mark = true; return ;}
		for(int i=0; i<4; i++) {
			int xx = dx[i]+x, yy = dy[i]+y;
			if(xx <= n&&yy <= m&&xx > 0&&yy > 0&&map[xx][yy] != ‘#‘&&!vis[xx][yy]) {
				vis[xx][yy] = 1;
				P.push((node) {xx, yy, tot+1});
			}
		}
	}
}

int main() {
	scanf("%d%d", &n, &m);
	for(int i=1; i<=n; i++) for(int j=1; j<=m; j++) {cin>>map[i][j]; if(map[i][j] == ‘m‘)sx = i, sy = j; if(map[i][j] == ‘d‘)ex = i, ey = j;}
	P.push((node) {sx, sy, 0});
	vis[sx][sy] = 1;
	bfs(P.front());
	if(mark == false) printf("No Way!\n");
}

  

原文地址:https://www.cnblogs.com/bljfy/p/8886245.html

时间: 2024-08-30 06:31:25

Luogu P2298 Mzc和男家丁的游戏的相关文章

洛谷 P2126 Mzc家中的男家丁

题目背景 mzc与djn的…还没有众人皆知,所以我们要来宣传一下. 题目描述 mzc家很有钱(开玩笑),他家有n个男家丁,现在mzc要将她们全都聚集起来(干什么就不知道了).现在知道mzc与男家丁们互相之间通信的时间,请算出把他们每个人叫到需要的总时间(要重复的哦).保证能把他们每个人叫到. 输入输出格式 输入格式: 第一行有一个数n,表示有n个男家丁.第二行一个数m表示有m条通信路线.之后m行,每行三个数a[i],b[i],c[i],表示第a[i]个男家丁(或mzc)和第b[i]个男家丁(或m

洛谷——P2126 Mzc家中的男家丁

P2126 Mzc家中的男家丁 题目背景 mzc与djn的…还没有众人皆知,所以我们要来宣传一下. 题目描述 mzc家很有钱(开玩笑),他家有n个男家丁,现在mzc要将她们全都聚集起来(干什么就不知道了).现在知道mzc与男家丁们互相之间通信的时间,请算出把他们每个人叫到需要的总时间(要重复的哦).保证能把他们每个人叫到. 输入输出格式 输入格式: 第一行有一个数n,表示有n个男家丁.第二行一个数m表示有m条通信路线.之后m行,每行三个数a[i],b[i],c[i],表示第a[i]个男家丁(或m

洛谷 P2299 Mzc和体委的争夺战

洛谷 P2299 Mzc和体委的争夺战 题目背景 mzc与djn第四弹. 题目描述 mzc家很有钱(开玩笑),他家有n个男家丁(做过前三弹的都知道).但如此之多的男家丁吸引来了我们的体委(矮胖小伙),他要来与mzc争夺男家丁. mzc很生气,决定与其决斗,但cat的体力确实有些不稳定,所以他需要你来帮他计算一下最短需要的时间. 输入输出格式 输入格式: 第一行有两个数n,m.n表示有n个停留站,m表示共有m条路. 之后m行,每行三个数a_i \; b_i \; c_iai?bi?ci? ,表示第

P2299 Mzc和体委的争夺战

题目背景 mzc与djn第四弹. 题目描述 mzc家很有钱(开玩笑),他家有n个男家丁(做过前三弹的都知道).但如此之多的男家丁吸引来了我们的体委(矮胖小伙),他要来与mzc争夺男家丁. mzc很生气,决定与其决斗,但cat的体力确实有些不稳定,所以他需要你来帮他计算一下最短需要的时间. 输入输出格式 输入格式: 第一行有两个数n,m,n表示有n个停留站,m表示共有m条路. 之后m行,每行三个数a[i],b[i],c[i],表示第a[i]个停留站到第b[i]个停留站需要c[i]的时间.(无向)

洛谷——P2299 Mzc和体委的争夺战

P2299 Mzc和体委的争夺战 题目背景 mzc与djn第四弹. 题目描述 mzc家很有钱(开玩笑),他家有n个男家丁(做过前三弹的都知道).但如此之多的男家丁吸引来了我们的体委(矮胖小伙),他要来与mzc争夺男家丁. mzc很生气,决定与其决斗,但cat的体力确实有些不稳定,所以他需要你来帮他计算一下最短需要的时间. 输入输出格式 输入格式: 第一行有两个数n,m,n表示有n个停留站,m表示共有m条路. 之后m行,每行三个数a[i],b[i],c[i],表示第a[i]个停留站到第b[i]个停

&lt;老友记&gt;学习笔记

这是六个人的故事,从不服输而又有强烈控制欲的monica,未经世事的千金大小姐rachel,正直又专情的ross,幽默风趣的chandle,古怪迷人的phoebe,花心天真的joey——六个好友之间的情路坎坷,事业成败和生活中的喜怒哀乐,无时无刻不牵动着彼此的心,而正是正平凡的点点滴滴,却成为最令人感动与留恋的东西. 人物:1.瑞秋•格林(RACHEL GREENE)由珍妮佛•安妮斯顿(Jennifer Aniston)扮演 瑞秋是莫妮卡的高中同学,在与牙医未婚夫的婚礼上脱逃至莫妮卡处. 2.罗

搞笑对话

男:聊吗女:不男:为什么女:忙男:忙什么女:玩男:玩什么女:游戏男:什么游戏女:玩的男:什么玩的女:烦男:烦就跟我聊女:滚男:地不干净女:靠男:给你肩膀女:找死啊男:"死"在字典961页女:晕男:我有止晕药女:我服了男:服了药就不晕了女:大哥男:认你这个妹妹了女:拜托男:拜可以,不用脱女:我要疯了男:我打120女:你神仙男:不要迷信女:还让人活吗男:有了我你会活得更精彩女:555男:三五香烟虽好,但有害健康女:去死吧男:我在网吧,不是死吧女:求你放过我男:好,告诉我手机号我就不说了女:

我的营销心得(史玉柱)

第一章 脑白金如何找到自己的消费者 营销最核心的是你要了解销给谁 定位就两个字送礼 广告最怕变,变就不能累积 做广告定位准确比广告形势更重要 广告创意一定要让你最了解的人去做,而不是全部都交给广告公司 最佳广告第二年就死,最差广告十年后还活着,最佳广告往往演了半天 都不知道再说什么.想办法让大家记住就是好事,即使是气氛的记住. 脑白金就是靠着这种恶心的广告推广自己,让大家更容易记住自己 要么一个台都不播,要么所有台全播,集中火力. 要播广告,至少要一年以上,电视广告要在消费者的脑海里留下印象,是

提倡“三个诸葛亮顶过一个臭皮匠”

在近日的课程开展过程中,小组合作学习方法的探索是重点.对于教师,需要在实践中学会应对各种问题:对于学生,也是这样.我们的学习,在单打独斗中经历的太久了.通过小组合作,让学习不顺利的同学能够及时得到帮助,而对学习顺利的同学,也有机会通过讲出来的方式,让自己对知识点的理解更加深入,同时锻炼更可贵的表达能力.合作能力.小组合作是解决问题的方式,将其附加功能发挥出来,将离我们的教育目标越来越近. 小组合作完成作业的理想的模式,是小组合作完成任务后,再通过组间互评,锻炼同学们学术评价的能力,实现将学习的全