UVa 11624 Fire!(多源BFS)

UVA11624 Fire! 两次BFS 读懂题意很重要 Fire! Joe works in a maze. Unfortunately,portions of the maze have caught on fire, and the owner of the maze neglectedto create a fire escape plan. Help Joe escape the maze. Given Joe's location in 阅读详情

题目链接:UVa 11624 Fire!

今晚好不爽!

多源BFS。

先对人BFS一次,再对火BFS一次,可能有好多块火,那么先把所有火都加入队列中。判断一块区域谁先到,找最小的。

一个一个输入会超时,得一行一行输入。

scanf输入字符不会忽略回车和换行。

#include <iostream>
#include <queue>
#include <cstring>
#include <vector>
#include <stdio.h>

using namespace std;

const int MAX_N = 1000 + 100;
const int INF = (1 << 30);
const int dr[4] = {0,-1,1,0};
const int dc[4] = {1,0,0,-1};

struct Cell
{
    int i,j;
    Cell(int i,int j) : i(i),j(j){};
};
char _map[MAX_N][MAX_N];
int T,r,c,ans;
queue<Cell> q;
int vis[MAX_N][MAX_N][2],dis[MAX_N][MAX_N][2];

void bfs(int kind)
{
    while(!q.empty())
    {
        Cell temp = q.front();
        q.pop();
        int a = temp.i;
        int b = temp.j;
        for(int i = 0;i < 4;i++)
        {
            int x = a + dr[i];
            int y = b + dc[i];
            if(x >= 0 && y >= 0 && x < r && y < c && _map[x][y] == '.' && !vis[x][y][kind])
            {
                q.push(Cell(x,y));
                vis[x][y][kind] = 1;
                dis[x][y][kind] = dis[a][b][kind] + 1;
            }
        }
    }
}
void check(int i,int j)
{
    if(!vis[i][j][0])
        return;
    if(!vis[i][j][1] || dis[i][j][0] < dis[i][j][1])
        ans = min(ans,dis[i][j][0] + 1);
}
int main()
{
    cin >> T;
    while(T--)
    {
        vector<Cell> fires;
        cin >> r >> c;
        int jr,jc;
        for(int i = 0;i < r;i++)
        {
            //scanf("%s",_map[i]);
            cin >> _map[i];
            for(int j = 0;j < c;j++)
            {
                //cin >> _map[i][j];
                if(_map[i][j] == 'J')
                {
                    jr = i;
                    jc = j;
                    _map[i][j] = '.';
                }
                else if(_map[i][j] == 'F')
                {
                    fires.push_back(Cell(i,j));
                    _map[i][j] = '.';
                }
            }
        }
        memset(vis,0,sizeof(vis));
        vis[jr][jc][0] = 1;
        dis[jr][jc][0] = 0;
        q.push(Cell(jr,jc));
        bfs(0);
        for(int i = 0;i < fires.size();i++)
        {
            vis[fires[i].i][fires[i].j][1] = 1;
            dis[fires[i].i][fires[i].j][1] = 0;
            q.push(fires[i]);
        }
        bfs(1);
        ans = INF;
        for(int i = 0;i < r;i++)
        {
            check(i,0);
            check(i,c - 1);
        }
        for(int j = 0;j < c;j++)
        {
            check(0,j);
            check(r - 1,j);
        }
        if(ans == INF)
            cout << "IMPOSSIBLE" << endl;
        else
            cout << ans << endl;
    }
    return 0;
}



【iOS开发】dyld: Symbol not found: ___chkstk_darwin 问题解决 【iOS开发】dyld: Symbol not found: ___chkstk_darwin 问题解决 Xcode 13.2.1 运行到iOS12.x版本上崩溃报错如下:dyld: Symbol not found: ___chkstk_darwin dyld: Symbol not found: ___chkstk_darwin Referenced from: /private/var/containers/Bundle/Application/A424CEFD-51DB-450E-9D62-B8 阅读详情

相关推荐

欧姆龙OMRON PLC之HostLink通讯协议(四)-FINS命令进阶应用与调试技巧

本文深入探讨欧姆龙OMRON PLC的HostLink通讯协议中FINS命令的进阶应用与调试技巧。文章聚焦实战排错,详细解析命令帧解剖、响应帧解读与网络抓包三大核心方法,并分享性能优化策略,如合并读写与异步设计。同时介绍了强制操作、多存储区访问等高级命令的应用场景,旨在帮助工程师高效解决现场通讯问题,提升系统稳定性与效率。

nept的博客 751

多源BFS

多源BFS 一、简介 多源BFS与单源BFS有什么区别呢? 单源BFS:从某一个点开始(起点) 多源BFS:从多个点同时开始走 如何解决多源BFS? 多源BFS:多个起点 ——> 多个起点同时加入队列! 核心:在求解多源BFS问题时,同时将所有起点加入队列即可! 二、练习 1.矩阵距离 【题目链接】173. 矩阵距离 - AcWing题库 给定一个 NN 行 MM 列的 0101 矩阵 AA,A[i] [j] 与A[k] [l] 之间的曼哈顿距离定义为: dist(A[i] [j],

涛涛的个人博客 1667

AOI检测总误判?五大常见问题与实战解决方案

通过对图像质量、检测程序、外界干扰、算法优化以及设备维护和校准的全面把控,企业可以有效降低误判率,提升AOI检测的准确性和可靠性,为工业生产提供更有力的质量保障。表现描述:在AOI检测时,元器件字符因印刷颜色深浅、模糊或受到灰尘干扰等差异,再加上元件库参数未根据实际生产优化,会使系统误将合格元件判定为不合格,严重影响生产效益和产品质量。优化元件库:着重检测关键差异字符,如型号编码等关键信息,剔除不必要字符的检测项,减少干扰,专注于关键识别的准确性。检测时,根据物料信息动态更新检测参数,使系统适应物料变化。

ALeader_AOI的博客 3496

【基础算法总结】多源 BFS_多源最短路问题

多源 BFS_多源最短路问题

fight_p的博客 2022

DC竞赛 国能日新功率预测题 rank21 解决方案(适合新手)

DataCastle国能日新光伏功率预测 数据异常处 本题在测试集中提供了时间、辐照度、风速、风向、温度、压强、湿度、实发辐照度8个特征,以及标签**实际功率**。 而在训练集中只有前七个特征,无实发辐照度。 策略 在观察了数据之后,我们确定实发辐照度是一个强力特征,于是我们采取了stacking的策略: 1. 第一次训练以实发辐照度为标签,预测 测试集的实发辐照度 2....

yyhhlancelot的博客 7295

3线SWD接线终极指南:用Jlink调试非3.3V设备的5个关键细节

本文详细解析了使用Jlink调试非3.3V设备时,3线SWD接线的5个关键细节。核心在于正确理解并连接Vref引脚以实现电压适配,避免供电冲突,并掌握精简接线法与固件修复技巧。文章以STM32F205等芯片为例,指导开发者安全、高效地进行混合电压调试。

e4f5g6h7的博客 437

【重难点算法】多源 BFS

单源 BFS 是从图中的某一点(源点)开始出发,向周围进行广度优先搜索,在搜索的过程中记录每一点到源点的距离。广度优先搜索是用队列来实现的,对于单源的问题,队列的初始化就是某一个单一源点;典型的多源广度优先搜索问题,我们从每一个烂橘子的单元格子出发,一圈一圈的污染周围四方向上的新鲜橘子,直到新鲜橘子的数量为 0。请你找出一个海洋单元格,这个海洋单元格到离它最近的陆地单元格的距离是最大的,并返回该距离。到最近的 1 的距离,如果记录矩阵中 1 的位置的队列的大小为空或者为。位置距离最近的 1 的曼哈顿距离。

weixin_54383080的博客 1030

拉曼光谱仪的原理与应用——TFN 7G F660手持式拉曼光谱识别仪

拉曼光谱仪的原理与应用——TFN 7G F660手持式拉曼光谱识别仪

TFN_yzgd的博客 928

广度优先搜索BFS进阶(一):多源BFS、优先队列BFS、双端队列BFS

普通队列BFS:适用于无权图;双端队列BFS:适用于边权为0或1且到每个顶点的边权都相等的带权图;优先队列BFS:适用于边权不为负且到每个顶点的边权都相等的带权图;如果图上到每个顶点的边权不等,则需使用最短路算法。

yuhaomogui的博客 2489

CS 188 Project3(RL) Q10:Approximate Q-Learning

实现一个近似的Q-learning学习代理,它学习状态特征的权重,其中许多状态可能共享相同的特征。在qlearningAgents.py中的ApproximateQAgent类中编写实现,它是PacmanQAgent的子类。 注:近似Q-learning学习假设在状态和动作对上存在一个特征函数f(s,a),它产生一个向量f1(s,a) .. fi(s,a) .. fn(s,a)特征值。我们在fe...

大模型与Agent智能体 2657

c++对halcon的动态链接库dll封装及调用(细细讲)

本文详细介绍了将Halcon图像处理算法封装为C++动态链接库(DLL)的完整流程,包括7个关键步骤:1)封装Halcon函数并导出CPP文件;2)在C++项目中配置Halcon环境(包含目录、库目录设置);3)验证Halcon代码;4)创建DLL项目并进行环境配置;5)编辑DLL并导出生成文件(.dll、.lib、.h);6)在主项目中配置DLL调用环境;7)编写测试代码验证功能。通过这个流程实现了Halcon算法的模块化封装和复用,文中提供了具体的配置路径和代码示例,重点说明了环境配置细节和文件结构安排

Tianwen_running的博客 969

UVa 11624 Fire

UVa 11624 Fire 题目大意: Joe在迷宫中工作。不幸的是,迷宫的一部分着火了,请帮助乔逃离迷宫。根据乔在迷宫中的位置以及迷宫的哪个方块着火,你必须确定火焰烧到他之前,乔是否可以离开迷宫,如果能离开他能跑多快。Joe和火每分钟移动一个方格,上、下、左、右,四个方向中的一个。火势向四个方向同时蔓延。Joe可以从迷宫的任何一个边界逃离迷宫。无论是乔还是火都不会到达有墙的位置。 注意:可能会...

指弹键盘哼民谣 836

在 SAP Fiori 中正确配置 Group 角色:从 PFCG 分配到首页呈现的完整链路

摘要:SAP Fiori项目中,用户登录后能否看到应用往往取决于角色配置而非前端开发。关键在于通过PFCG角色将launchpad designer中创建的tile group关联到用户角色。Catalog是应用池,group是用户首页可见的工作区。正确配置后,用户会看到角色对应的默认分组,同时保留个性化调整能力。项目实施中常见问题是应用开发完成但未正确配置group与角色关联,导致业务用户无法在首页看到应用入口。(150字)

2007 年 ~ 2025 年,深耕 SAP 技术 18 年 167

UVA - 11624 Fire! (双BFS)

UVA - 11624 Fire! BFS UVA - 11624 题意 简单的BFS运用,注意火源不止一个且火要比人先行动。 分别给火和人写一个队列就行了。 #pragma GCC optimize(3)//O3 #pragma GCC optimize(2)//O2 #include<bits/stdc++.h> using namespace std; using ll = ...

qq_43586463的博客 1563

OV9734 DATASHEET,完整规格书

OV9734完整规格书,包括电气参数,尺寸规格,寄存器配置表等

Probability and Statistics - 4th edition

Probability and Statistics - 4th edition

UVA - 11624 Fire!(BFS+ 思维)

UVA - 11624 Fire! 题目 给一个迷宫,起始位置,还有着火点,每过一个时间,着火点都会蔓延,问最终能否从迷宫逃出。 分析 如果没有着火的情况,直接BFS模板题,加上着火的话,可以预处理每个点被蔓延的时间,到时候 bfsbfsbfs 能不能走出去的时候,不能走当前已经着火的地方。 预处理着火的地方,要将所有起始找着火点都加入初始队列,相当于多个源点。 代码 #include <c...

Stormjing的博客 313

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

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

uva 11624 - Fire!(bfs)

题目链接:uva 11624 - Fire! 先从F开始,做一遍BFS,处理出每个位置着火的时间。再从J开始走,每次只能走到着火时间大于当前时间的点。 #include #include #include #include using namespace std; const int maxn = 1005; const int inf = 0x3f3f3f3f;

不慌不忙、不急不躁 568

VB摄像头监控

该VB模块可对摄像头捕获的画面进行录像等,可在创建的窗口进行控制

UVa 11624 Fire!(着火了!)

UVa 11624 - Fire!(着火了!) Time limit: 1.000 seconds Description - 题目描述   Joe works in a maze. Unfortunately, portions of the maze have caught on fire, and the owner of the maze neglect...

183

UVA 11624 Fire!(预处理bfs)

https://vjudge.net/problem/UVA-11624 UVa真的好卡,, 先预处理‘F’,地图上标记好每个位置火最早出现的时间,之后正常的跑bfs就行了,还是挺水的题 做题前不要莽,磨刀不误砍柴工,仔细想想再下手 最后一道简单搜索了啊,去刷进阶版! #include&lt;iostream&gt; #include&lt;cstring&gt; #inc...

STOP 510

UVA 11624 10054

图论题目小结,考察了BFS和欧拉回路的输出。题号:UVA 11624 10054

那些年我们切过的题 878

UVA 11624 Fire!(BFS)

UVA 11624 https://vjudge.net/contest/281425#problem/J Joe works in a maze. Unfortunately, portions of the maze have caught on fire, and the owner of the maze neglected to create a fire escape plan. ...

夏日蹲坑的博客 164

J - Fire! UVA - 11624【多源BFS】

J - Fire! 题意: 房间里起火,人和火可以上下左右走,每分钟都走一格(火是四个方向同时一格),都不能越过墙。人只要走到房间边界(非墙)就可以逃生。给定人、火、墙的位置,如果人能逃生,输出所需时间,如果不能,输出IMPOSSIBLE ...

我于万物之中 255

UVA - 11624  Fire! 两次BFS

UVA - 11624  Fire!Joe works in a maze. Unfortunately, portions of the maze have caught on fire, and the owner of the maze neglected to create a fire escape plan. Help Joe escape the maze. Given Joe’s lo...

GYH0730的博客 603

Fire! (UVA - 11624,BFS + 模拟)

一.题目链接: UVA-11624 二.题目大意: 给你一个 N × M 的图,图由以下符号组成. '#':墙 '.':空地 'F':火 'J':起点 每时刻,火会向四周延展(墙可阻隔火的延展) 每时刻,人可以向四周任意一个方向移动. 当人到达边界时,人再走一步即可逃离. 求最少需要多少时间,人能够逃离,如果不能逃离,则输出 "IMPOSSIBLE". 三.分析: 就是在...

The___Flash的博客 234

【UVA 11624】Fire!(BFS)

DescriptionJoe works in a maze. Unfortunately, portions of the maze have caught on fire, and the owner of the maze neglected to create a fire escape plan. Help Joe escape the maze. Given Joe’s locat

Ice_Confuse 377

uva 11624(BFS)

UVA 11624 题意:图中头几堆火,火是按四周蔓延的,然后判断J只能走‘.’,而且要在火蔓延之前才能通过,然后如果J在图的边界,那么就逃出了; 思路:对火堆进行BFS,得到火到达各个'.'的最短的时间,然后对J进行BFS,要在火到达之前进行通过; 注意:因为BFS的性质,先到达的就是最短的时间,然后对于没用火到达的地方,不用判断火的时间,防止因为初始化times数组使得时间一样引

Everything can be done! 377

UVA 11624 Fire!(图论BFS)

UVA 11624 Fire!(图论BFS) 题意:问你Joe需要最少多长时间能走出一个大火蔓延到网格迷宫。迷宫中存在火源和障碍格。 分析: 朴素的做法是用BFS来模拟Joe的走法,然后看他下一步走的格子是否没有火。(判断该格子在当前时刻有没有火,只需要看看与该格子同行或同列的最近火源是哪个,然后算出起火时间即可。这样算可能会超时)        现在由于火源也是和Joe同样的朝4个方向走

code 1524
上一篇: HDU 1159 Common Subsequence(LCS)
下一篇: UVa 558 - Wormholes(SPFA)
小爷永远不死
博客等级 码龄15年 58粉丝 363原创
评论
成就一亿技术人!
拼手气红包6.0元
还能输入1000个字符
 
 条评论被折叠 查看
添加红包

请填写红包祝福语或标题

个

红包个数最小为10个

元

红包金额最低5元

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

抵扣说明:

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

余额充值