Find a way 广搜题 两个人见面 找到最近的地方

#include<algorithm>
#include<iostream>
#include<cstdio>
#include<cstring>
#include<queue>
#include<math.h>
using namespace std;
#define N 300
int a[4][2]={{1,0},{-1,0},{0,1},{0,-1}};
int n,m,w[N][N],ww[N][N],www[N][N];
char str[N][N];
struct node
{
    int x,y,s;
};
void q(int x,int y)
{
    memset(w,0,sizeof(w));
    queue<node> Q;
    node q,p;
    q.x=x;
    q.y=y;
    q.s=0;
    Q.push(q);
    w[q.x][q.y]=1;
    while(Q.size())
    {
        p=Q.front();Q.pop();
        for(int i=0;i<4;i++)
        {
            q.x=p.x+a[i][0];
            q.y=p.y+a[i][1];
            q.s=p.s+1;
            if(q.x>=0&&q.x<n&&q.y>=0&&q.y<m&&!w[q.x][q.y]&&str[q.x][q.y]!=‘#‘)
            {
                w[q.x][q.y]=1;
                Q.push(q);
                ww[q.x][q.y]++;
                www[q.x][q.y]+=q.s;
            }
        }
    }
}
int main()
{
    while(scanf("%d%d",&n,&m)!=EOF)
    {
        memset(ww,0,sizeof(ww));
        memset(www,0,sizeof(www));
        for(int i=0; i<n; i++)
            scanf("%s",str[i]);
        for(int i=0; i<n; i++)
        {
            for(int j=0; j<m; j++)
            {
                if(str[i][j]==‘Y‘)
                    q(i,j);
                if(str[i][j]==‘M‘)
                    q(i,j);
            }
        }
        int ans=1234567;
        for(int i=0;i<n;i++)
        {
            for(int j=0;j<m;j++)
            {
                if(str[i][j]==‘@‘&&ww[i][j]==2)
                {
                    ans=min(ans,www[i][j]);
                }
            }
        }
        printf("%d\n",ans*11);
    }
    return 0;
}

http://acm.hdu.edu.cn/showproblem.php?pid=2612

时间: 2024-10-10 10:20:51

Find a way 广搜题 两个人见面 找到最近的地方的相关文章

hdu 3004 不错的搜索题(广搜)

敲了一上午    意外的超内存了一次   !!!!!开始数组开的太大 题意是给你一个棋盘, 有5种不同的棋子,一个车   一个马  一个炮(每个只有一个)  走法按正常棋子走法一样     还有对面一个将    和众多小兵(将和小兵都是不能动的) 问你最少需要走几步能杀死将: 思路:  明显的广搜题 结构体里有车马炮分别的坐标和当前的步数,  按正常的广搜做:      每次都有三种走法  (车 马 炮 )  而对车又有两种走法  对马有8种走法  (注意蹩马的判断)   对炮友2种走法   注

迷宫广搜

上学期学了C,这学期学C++.感觉最难的还是算法,上周作业的一道广搜题是我第一次接触广搜,由于第一学期刚学编程就接触的太多的算法难题,不禁对代码产生畏惧,不过还好没有放弃,虽然算法很难,但我慢慢找到了一点学数学时的乐趣.先介绍一下这道未来的我看过来会觉得很简单一道题吧 You are provided a maze(迷宫), and you need to program to find the least steps to walk from the start to the end.And

poj 3984:迷宫问题(广搜,入门题)

迷宫问题 Time Limit: 1000MS   Memory Limit: 65536K Total Submissions: 7635   Accepted: 4474 Description 定义一个二维数组: int maze[5][5] = { 0, 1, 0, 0, 0, 0, 1, 0, 1, 0, 0, 0, 0, 0, 0, 0, 1, 1, 1, 0, 0, 0, 0, 1, 0, }; 它表示一个迷宫,其中的1表示墙壁,0表示可以走的路,只能横着走或竖着走,不能斜着走,要

杭电 1372 Knight Moves(广搜模板题)

http://acm.hdu.edu.cn/showproblem.php?pid=1372 Knight Moves Time Limit: 2000/1000 MS (Java/Others)    Memory Limit: 65536/32768 K (Java/Others) Total Submission(s): 6439    Accepted Submission(s): 3886 Problem Description A friend of you is doing res

poj1426--Find The Multiple(广搜,智商题)

Find The Multiple Time Limit: 1000MS   Memory Limit: 10000K Total Submissions: 18527   Accepted: 7490   Special Judge Description Given a positive integer n, write a program to find out a nonzero multiple m of n whose decimal representation contains

一道广搜寻路题

同样是在qq群里看到的题目,想了好久算法,实现也用了很久. 关于题目首先看图: 总的来说,就是一个二维迷宫的寻路,迷宫中有对应的钥匙和刺,每走一步会消耗1点Hp,当走到刺上时会额外消耗100点hp,持有对应颜色的钥匙通过刺时不用额外消耗Hp. 给予起点和终点的坐标,,输出移动方式,让人物抵达终点所消耗的Hp尽可能的小. 例子: 3 3 1..a##A...1 13 3这个是输入数据 第一个代表高 第二个宽 第三个是钥匙和陷阱的对数 .代表平地 #代表墙 小写字母是钥匙 大写字母是对应的陷阱输出为

UVA 122 Trees on the level 二叉树 广搜

题目链接: https://vjudge.net/problem/UVA-122 题目描述: 给你一种二叉树的构造方法, 让你逐层输出二叉树的节点值, 如果不能够则输出"not complete" 解题思路: 这道题就是硬搞就可以了, 参考紫书去做的, 首先处理输入就是非常麻烦的事情, 用到了sscanf就会轻松很多, 看来C中还是有很多很多的好用的标准库函数可以拿来用的, 例如还有本题中的strchr() , 处理完输入, 然后就去构造数. 然后广搜一遍即可 代码: #include

双向广搜

双向广搜 (2011-08-31 16:45:24)   Eight    题目链接:http://acm.hdu.edu.cn/showproblem.php?pid=1043 讲到双向广搜,那就不能不讲经典的八数码问题,有人说不做此题人生不完整 . 所谓双向广搜,就是初始结点向目标结点和目标结点向初始结点同时扩展,直至在两个扩展方向上出现同一个结点,搜索结束.它适用的问题是,扩展结点较多,而目标结点又处在深沉,如果采用单纯的广搜解题,搜索量巨大,搜索速度慢是可想而知的,同时往往也会出现内存空

poj 3278 Catch That Cow(广搜)

Catch That Cow Time Limit: 2000MS   Memory Limit: 65536K Total Submissions: 45087   Accepted: 14116 Description Farmer John has been informed of the location of a fugitive cow and wants to catch her immediately. He starts at a point N (0 ≤ N ≤ 100,00