当前位置: 首页 > news >正文

P1332 血色先锋队复盘

血色先锋军(多源 BFS)题解复盘

基本信息

项目内容
题目编号、来源血色先锋军
训练层级B BFS进阶
知识版块BFS、多源 BFS、网格搜索

解题前・关键信号识别

维度分析
目标、约束、底层结构目标:给定多个感染源,求每个领主被感染的最短时间;约束:n,m ≤ 500,a,b ≤ 1e5;底层结构:多个起点同时扩散,每个格子被第一次到达的时间即为感染时间。
数据规模n×m ≤ 250000,BFS 完全可行。
候选算法和依据多源 BFS;依据:多个感染源同时向四周扩散,每个格子被最早到达的时间就是感染时间。
复杂度预判时间复杂度 O(n×m),空间复杂度 O(n×m)。

解题后・外化复盘

维度内容
实现结构 / 核心思路第一步将所有感染源坐标存入队列,标记vis[x][y]=1,感染时间v[x][y]=0;第二步从队列中取出点,枚举 4 个方向;第三步若邻居未访问(vis[nx][ny]==0),则v[nx][ny]=v[x][y]+1,标记访问并入队;第四步最后按输入顺序输出每个领主的v[x][y]核心思想:多源 BFS 从所有起点同时出发,第一次到达即为最短时间,天然模拟“瘟疫扩散”过程。
错因回溯1. 用单源 BFS 对每个领主分别搜索,导致超时;2. 忘记标记vis导致重复入队;3. 坐标边界判断写错(nx<=0而非nx<0);4. 读取领主时没有单独存储,导致输出顺序错误。
边界和易错点1. 起点(感染源)的感染时间为 0;2. 入队时立即标记vis,防止重复入队;3. 输出顺序必须与输入顺序一致,所以需要先存储所有领主;4. 坐标从 1 开始,边界判断为nx<1 || nx>n || ny<1 || ny>m
下次看到什么信号,我应该想到这个方法看到「多个起点 + 同时扩散 + 求最短时间/距离」,用多源 BFS。

AC 完整代码

#include<iostream>#include<cstring>#include<queue>#include<algorithm>#include<set>#include<vector>usingnamespacestd;intv[505][505];intvis[505][505];set<pair<int,int>>s1;vector<pair<int,int>>s2;intdx[]={-1,0,1,0};intdy[]={0,1,0,-1};intn,m,a,b;voidbfs(){queue<pair<int,int>>q;for(auto&s:s1){intx=s.first;inty=s.second;q.push({x,y});vis[x][y]=1;}while(!q.empty()){auto[x,y]=q.front();q.pop();for(inti=0;i<4;i++){intnx=x+dx[i];intny=y+dy[i];if(nx<=0||nx>n||ny<=0||ny>m)continue;if(vis[nx][ny]==0){v[nx][ny]=v[x][y]+1;q.push({nx,ny});vis[nx][ny]=1;}}}}intmain(){cin>>n>>m>>a>>b;for(inti=0;i<a;i++){intx,y;cin>>x>>y;s1.insert({x,y});}for(inti=0;i<b;i++){intx,y;cin>>x>>y;s2.push_back({x,y});}bfs();for(auto&s:s2){intx=s.first;inty=s.second;cout<<v[x][y]<<endl;}return0;}
http://www.jsqmd.com/news/1282039/

相关文章:

  • 2026新版遂宁防水补漏服务商参考|阳台渗漏修缮方案指南 - 筑宅安
  • 2026年武汉黄陂区管道疏通避坑指南:金池师傅教你识别隐形收费 - 余生黄金回收
  • 2026西安黄金回收五区深度走访实录:未央雁塔长安灞桥莲湖,把临街门店的真实内幕一次说清 - 人间烟火小记
  • 基于SpringBoot的企业人事管理系统(Java+SpringBoot+MySQL)| 计算机毕业设计 附源码论文PPT
  • CT值到灰度值的映射, 以及windowing中的窗宽和窗位
  • 3步掌握星露谷物语农场规划器:免费工具打造完美农场
  • 免费开源鼠标连点器终极指南:5分钟快速实现自动化点击
  • 2026松江管道疏通防坑实测邻里帮师傅上门快 - 余生黄金回收
  • P1135 奇怪的电梯复盘
  • Blender终极贝塞尔曲线插件:Flexi工具完全指南
  • Kubernetes 的 Annotation
  • 如何用yuzu模拟器在电脑上打造专属Switch游戏体验?
  • 剔除套路商家,2026石家庄黄金回收优选排名,石家庄卖黄金直接参考 - 资讯洞察员
  • 如何实现终极Android Root隐藏:SUSFS4KSU模块完整指南
  • 2026年句容黄金回收实战指南:成色检测与计量避坑全攻略 - 微城市网络
  • Palworld存档工具终极指南:3种方法实现高效数据解析与转换
  • 一部60分钟AI长片拿下了广电许可证:当开源冲破2.8万亿参数,AI影视化的最后一道坎在哪?
  • 2026年全自行升降机、全自行升降平台厂家推荐 - 优企甄选
  • 如何彻底告别Windows磁盘空间不足:WinDirStat完全指南
  • C语言—求第n个斐波那契数列的值(非递归)
  • 【单片机毕业设计推荐】基于 STM32 的智能温室环境监测与自动调控系统设计,基于 STM32 的盆栽智能水肥光照综合管理装置设计(011704)
  • 区块链学习笔记:D04 区块链在各行业领域的应用(二)
  • 从OpenClaw漏洞事件看RASP与SCA在开源软件安全加固中的实战应用
  • CSS3 3D转换模块-正方体,长方体
  • 绥宁县新房除甲醛公司测评对比,本地业主实测,选邵阳森呼吸更省心 - 专注室内空气检测治理
  • 2026新版汉中防水补漏服务商参考|阳台渗漏修缮方案指南 - 筑宅安
  • 花都招聘平台哪个好:【帅聘网】实力认证 - MXyuyu
  • 【Springboot毕设全套源码+文档】基于SpringBoot的艺术作品展示平台的设计与实现(丰富项目+远程调试+讲解+定制)
  • 基于行空板与ChatGPT API的智能硬件创客项目:乐观新闻播报器
  • 佛山夏令营:军博营地专业 - 17728098551