zoukankan      html  css  js  c++  java
  • 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
    ", 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!
    ");
    }
    

      

  • 相关阅读:
    git 回滚merge的两个分支
    java 将一段时间分割为两个连续的时间
    Linux 命令记录
    C# WebBrowser 设置独立的代理
    VS2019 开发Django(八)------视图
    VS2019 开发Django(七)------VS2019不能格式化html代码
    VS2019 开发Django(六)------Admin中图片上传
    VS2019 开发Django(五)------createsuperuser
    VS2019 开发Django(四)------models
    VS2019 开发Django(三)------连接MySQL
  • 原文地址:https://www.cnblogs.com/bljfy/p/8886245.html
Copyright © 2011-2022 走看看