HDU - 2612 Find a way

【HDU 2612 Find a Way(BFS)】(兼BFS入门笔记) 【HDU 2612 Find a Way(BFS)】 阅读详情

Find a way

Problem Description
Pass a year learning in Hangzhou, yifenfei arrival hometown Ningbo at finally. Leave Ningbo one year, yifenfei have many people to meet. Especially a good friend Merceki.
Yifenfei’s home is at the countryside, but Merceki’s home is in the center of city. So yifenfei made arrangements with Merceki to meet at a KFC. There are many KFC in Ningbo, they want to choose one that let the total time to it be most smallest.
Now give you a Ningbo map, Both yifenfei and Merceki can move up, down ,left, right to the adjacent road by cost 11 minutes.

Input
The input contains multiple test cases.
Each test case include, first two integers n, m. (2<=n,m<=200).
Next n lines, each line included m character.
‘Y’ express yifenfei initial position.
‘M’ express Merceki initial position.
‘#’ forbid road;
‘.’ Road.
‘@’ KCF

Output
For each test case output the minimum total time that both yifenfei and Merceki to arrival one of KFC.You may sure there is always have a KFC that can let them meet.

Sample Input
4 4
Y.#@
….
.#..
@..M
4 4
Y.#@
….
.#..
@#.M
5 5
Y..@.
.#…
.#…
@..M.
#…#

Sample Output
66
88
66

题目大意,两个人很久没见面了,准备找个KFC见一面,要求输出最短路径,两个人所走路乘11;

思路:两个人分别BFS用一个数组记录他们抵达的时间,然后比较大小,找出和最小的,但是要注意,一但有一个元素是0就代表一个人无法到达,这个数据无法使用

提交链接HDU-2612

#include <stdio.h>
#include <string.h>

int n, m, tx, ty, mx, my, k[100000][4], ans, min, max, flag[100000];
char map[201][201];
int vis[201][201];
int dir[4][2] = {{0, 1}, {1, 0}, {0, -1}, {-1, 0}};

struct node {
    int x;
    int y;
    int step;
}list[100000];

void bfs(int a, int b, int c);
int go(int x, int y);

int main(void)
{
    while(scanf("%d%d", &n, &m) != EOF){
    ans = 0;
    memset(map, '#', sizeof(map));
        memset(k, 0, sizeof(k));
    for (int i = 0; i < n; i++){
        getchar();
        for (int j = 0; j < m; j++){
            scanf("%c", &map[i][j]);
            if (map[i][j] == 'Y'){
                tx = i;
                ty = j;
            }
            else if (map[i][j] == 'M'){
                mx = i;
                my = j;
            }
            else if(map[i][j] == '@'){
                k[ans][0] = i;
                k[ans][1] = j;
                ans++;
            }
        }
    }
    bfs(tx, ty, 2);
    bfs(mx, my, 3);
    min = 10000000;
    for (int i = 0; i < ans; i++){
        if (k[i][2] + k[i][3] < min && k[i][2] != 0 && k[i][3] != 0){
            min = k[i][2] + k[i][3];
        }
    }
    printf("%d\n", min * 11);
    }
    return 0;
}

int go(int x, int y)
{
    if (x < 0 || x >= n || y < 0 || y >= m || map[x][y] == '#' || map[x][y] == 'M' || map[x][y] == 'Y')
        return 0;
    return (!vis[x][y]);
}

void bfs(int a, int b, int c)
{
    int sum, head = 0, tail = 1, m = 0;
    int x, y, xx, yy;
    memset(list, 0, sizeof(list));
    memset(flag, 0, sizeof(flag));
    list[0].x = a;
    list[0].y = b;
    list[0].step = 0;
    memset(vis, 0, sizeof(vis));
    while (head < tail){
        x = list[head].x;
        y = list[head].y;
        sum = list[head].step;
        for (int i = 0; i < 4; i++){
            xx = x + dir[i][0];
            yy = y + dir[i][1];
            if (go(xx, yy)){
                if (map[xx][yy] == '@'){
                    for (int i = 0; i < ans; i++)
                        if (k[i][0] == xx && k[i][1] == yy && flag[i] == 0){
                            k[i][c] = sum + 1;
                            m++;
                            flag[i] = 1;
                            break;
                        }
                }
                vis[xx][yy] = 1;
                list[tail].x = xx;
                list[tail].y = yy;
                list[tail].step = sum + 1;
                tail++;
            }
        }
        if (m >= ans){
            break;
        }
        head++;
    }
}
SAP License USMM SLAW2 SAP审计 引言 企业每年都会收到SAP License审计邮件,邮件内容大致就是根据贵公司与SAP签定的合同XXX条款规定,贵公司所安装的SAP系统需要进行测定。 关键字: SAP License、 SAP USMM、 SLAW2、 SAP 账号、SAP 账号审计、 SAP License 审计、 SAP 审计报告、SAP 账号优化 SAP License审计邮件 企业每年都会收到SAP License审计邮件,邮件内容大致就是根据贵公司与SAP签定的合同XXX条款规定,贵公司所安... 阅读详情

相关推荐

AS5600磁编码器选型与安装避坑指南:磁铁形状、间隙距离到底怎么选?(附实测数据)

本文详细解析了AS5600磁编码器的选型与安装要点,包括磁铁形状、间隙距离等关键参数的选择,并附有实测数据支持。特别针对Arduino和I2C接口的应用场景,提供了硬件选型和机械安装的实用指南,帮助开发者避免常见陷阱,提升系统精度和稳定性。

weixin_27038245的博客 287

N-Find a way

圣诞节要到了,坤神和瑞瑞这对基佬想一起去召唤师大峡谷开开车。百度地图一下,发现周围的召唤师大峡谷还不少,这对基佬纠结着,该去哪一个。。。坤神:我要去左边的这个(因为离自己比较近 哈哈~)。。瑞瑞:我要去右边的这个(因为离自己比较近 嘿嘿~) ........这对基佬闹矛盾了,开车有危险了!  为了不让他们去召唤师大峡谷坑人,riot决定让他们去X召唤师大峡谷,保证他俩所走的路程和最短。每走一个点需

Dch19990825的博客 559

硬件原理图:从软件思维到硬件接口的嵌入式开发破局指南

本文为软件开发者提供了读懂硬件原理图的嵌入式开发破局指南。文章将硬件原理图类比为“硬件系统的架构图”,引导读者将软件API调用思维迁移到硬件接口理解上,详细解析了电阻、电容、二极管等常见元器件的“硬件API”功能与选型逻辑,并通过实战电路拆解,阐述了从原理图分析到驱动代码编写的完整思维链条,帮助开发者建立软硬件协同的系统级视角。

lg888的博客 493

Find a way

Pass a year learning in Hangzhou, yifenfei arrival hometown Ningbo at finally. Leave Ningbo one year, yifenfei have many people to meet. Especially a good friend Merceki. Yifenfei’s home is at the coun

海绵的博客 346

深入解析FOC电流环PI参数整定:从理论到实践

本文深入解析了FOC(磁场定向控制)中电流环PI参数整定的核心原理与实践方法。文章从永磁同步电机模型出发,详细阐述了基于带宽与零极点对消的工程法及考虑逆变器延迟的二阶系统整定法两种经典策略,并提供了从理论计算到安全上电调试的完整步骤与常见问题解决方案,帮助工程师精准调校电机控制性能。

weixin_29164497的博客 445

SystemC实战:用C++搞芯片建模的5个典型场景(含代码示例)

本文通过五个典型实战场景,详细介绍了如何使用SystemC这一基于C++的硬件建模库进行芯片设计与系统级建模。内容涵盖从基础并发模块构建、事务级总线建模、跨时钟域验证,到与ModelSim协同仿真及多核系统性能探索,并提供了完整的代码示例,帮助软件工程师利用熟悉的C++工具链高效参与硬件架构设计与验证。

weixin_29191761的博客 314

HDU:Find a way

搜索题目

温姑娘的博客 768

国产麒麟系统中的PaddleOCR离线绿色部署:高效安全的文字识别新纪元

摘要:本文详细介绍了PaddleOCR在银河麒麟V10SP1系统上的离线部署方案。通过Conda虚拟环境隔离依赖,采用离线包安装方式实现无网络部署,支持80+语言识别。重点讲解了模型量化剪枝优化、多线程处理等性能调优技巧,并提供了完整的OCR识别代码示例。该方案具有数据本地化处理的安全优势,适用于医疗票据数字化等对隐私要求严格的场景,同时解决了模型加载失败、内存不足等常见问题。

墨夶的博客 1227

HDU 2612 Find a way

HDU 2612 Find a way 题目大意: y和m要去肯德基聚餐,图中有多个kfc,他们要选的那个kfc必须到彼此的所用时间之和最小,问最少需要多少时间。 题目思路: 将Y和M分开进行BFS, 然后根据二者到达KFC的时间总和,取用时最少的kfc 推荐与这题类似并且稍微复杂的题:UVA 11624 具体代码: #include<iostream> #include<que...

指弹键盘哼民谣 559

手把手教你用VCS+VERDI搭建数字IC验证环境(附Makefile避坑指南)

本文详细介绍了如何使用VCS编译器和VERDI调试工具搭建数字IC验证环境,涵盖从RTL设计到波形分析的全流程。重点解析了Makefile自动化构建、FSDB波形生成方法及常见问题解决方案,帮助工程师高效完成验证工作。特别提供了VCS编译参数配置和VERDI调试技巧的实用指南。

weixin_33738578的博客 447

6万字嵌入式最全八股文面试题大全及参考答案(持续更新)

进程上下文定义:进程上下文包含了进程执行时所需的所有信息,包括 CPU 寄存器的值、内核栈、任务控制块(TCB)等。作用:当进程被切换时,需要保存当前进程的上下文,并恢复下一个将要运行进程的上下文。中断上下文定义:中断上下文是指处理中断时 CPU 所处的状态,包括中断发生时的寄存器值等。作用:当中断发生时,CPU 会自动保存当前的上下文信息,并跳转到相应的中断处理程序。示例表格上下文描述进程上下文包含进程执行时的所有相关信息中断上下文处理中断时 CPU 所处的状态线程同步定义。

大模型大数据攻城狮的专栏 7921

hdu2612 Find a way

原文链接: hdu2612 Find a way 上...

阿豪 161

vLLM专题(七)-支持的模型列表

vLLM支持跨多种任务的生成式和池化模型。如果一个模型支持多个任务,您可以通过–task参数来设置任务。对于每个任务,我们列出了已在vLLM中实现的模型架构。每个架构旁边,我们列出了一些使用该架构的流行模型。

1257

HDU 2612 find a way

跑两遍BFS,开数组记录到达KFC步数。

大咸鱼。。。 2366

jre9下载 jdk9

(Java SE Runtime Environment 9.0) 9.0u175 官方最新版 【x86|x64】

C# WinForm 基于DirectShow.dll编写的程序,可边预览边保存视频,音频和图片

基于微软的DirectShow.dll的二次开发1.自动识别连接的摄像头跟麦克风且可以对其进行选择(默认选中第一个)2.可录制wmv和avi两种格式的视频并且都带有音频,avi可以录制的分辨率和帧数进行选择,wmv默认进行了淸晰度优化如不喜欢可去除代码中有相关提示3.可在预览点开之后进行拍照,也可边录制视频边拍照4.添加了视频和音频的压缩功能(酌情使用)这次二次开发发现C#对DirectShow的相关信息太少,这次做完也不敢藏私共享出来,还望大家指正

HDU-2612-Find a way

HDU-2612-Find a way http://acm.hdu.edu.cn/showproblem.php?pid=2612 求2个点到KFC的距离之和,使其最小,可用2次BFS,分别求出2个点到各个KFC的最短距离,然后找出和最小的即可 #include #include #include #define max 0x7fffffff int n,m; char map[250

菜鸟的程序人生 3819

LinePhone3.2.7(android端最新版本) sip客户端

SIP客户端For android:LinePhone3.2.7(最新版本),官网地址:http://www.linphone.org/

HDU 2612 Find a way

http://acm.hdu.edu.cn/showproblem.php?pid=2612 Find a way Time Limit: 3000/1000 MS (Java/Others)Memory Limit: 32768/32768 K (Java/Others)Total Submission(s): 6065Accepted Submission...

deyou1988的专栏 135

WINCC7.3破解文件

WINCC7.3硬件够破解文件,有需要的下载!WINCC7.3硬件够破解文件,有需要的下载!

HDU - 2612 Find a way 两次BFS

HDU - 2612 Find a way 题意: 输出 Y 和 M 到 KFC 最短时间总和。 思路: 两次 BFS 时间相加,最小的那个即为答案。除了 '#' 不能走,其余的都可以走且每走一步就需要 11 minutes。 #include&lt;iostream&gt; #include&lt;cstdio&gt; #include&lt;cstring&gt; #includ...

没有梦想何以远行 198

hdu 2612 Find a way

题目连接 http://acm.hdu.edu.cn/showproblem.php?pid=2612 Find a way Description Pass a year learning in Hangzhou, yifenfei arrival hometown Ningbo at finally. Leave Ningbo one year, yifenfei have ...

dong12276的博客 88

HDU-2612 Find a way

Find a way Time Limit: 3000/1000 MS (Java/Others)    Memory Limit: 32768/32768 K (Java/Others) Total Submission(s): 3725    Accepted Submission(s): 1212 Problem Description Pass a year learnin

JSure的代码库 928

HDU 2612 Find a way(BFS)

HDU 或 HDOJ 2612 Find a way (两次 BFS)

Keep trying, keep going 474

HDU - 2612 Find a way 【BFS】

题目链接 http://acm.hdu.edu.cn/showproblem.php?pid=2612 题意 有两个人 要去一个城市中的KFC 一个城市中有多个KFC 求两个人到哪一个KFC的总时间最少 求出这个最少的总时间 思路 用BFS打一遍表 求出两个人每人到 每个 KFC 的时间 然后 遍历一下 更新答案 AC代码 #in...

dianxi0949的博客 146

HDU2612 Find a way BFS

Find a way Time Limit: 3000/1000 MS (Java/Others) Memory Limit: 32768/32768 K (Java/Others) Total Submission(s): 28250 Accepted Submission(s): 9128 Problem Description Pass a year learning in Ha...

DouglasConnor的博客 299

N - Find a way HDU - 2612

Find a way HDU - 2612 题意: 两个人从两个地方同时出发,每次可上下左右移动1格,每人耗时11分钟。从给定的目的地中选择一个使两人总用时最短。

我于万物之中 267

搜索 Find a way HDU - 2612 BFS

搜索 Find a way HDU - 2612 BFS 题意: 两个人Y和M要去同一家肯德基吃饭,然后问你怎么走所花费的总时间最少。 ‘#’代表的是墙不能走。 思路: 就是广搜开两个数组,虽然在同一个队列里面,但是标记一下之后更新与他相关的相关数组就可以了。我wa了几次,最后一定要注意 有可能以有一家kfc是被包围在墙壁里面的不可能到达,所以要对可以到达的kfc做一下标记。 其余就是bfs的板...

laaahu的博客 496

HDU2612--find a way

HDU2612–find a way 一、题目描述 Problem Description Pass a year learning in Hangzhou, yifenfei arrival hometown Ningbo at finally. Leave Ningbo one year, yifenfei have many people to meet. Especially a good friend Merceki. Yifenfei’s home is at the countryside,

Jarvis223的博客 633
上一篇: 南阳oj-58 最少步数
下一篇: HDU - 2084 数塔
cBlithe
博客等级 码龄10年 18粉丝 12原创
评论
成就一亿技术人!
拼手气红包6.0元
还能输入1000个字符
 
 条评论被折叠 查看
添加红包

请填写红包祝福语或标题

个

红包个数最小为10个

元

红包金额最低5元

当前余额3.43元 前往充值 >
需支付:10.00元
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付元
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值