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

BFS进阶刷题

P2658 汽车拉力比赛

#include <iostream>
#include <queue>
#include <climits>
#include <cstring>
using namespace std;
#define int long long
int n, m;
int high[505][505];
int flag[505][505];
int dx[] = {1, 0, -1, 0};
int dy[] = {0, -1, 0, 1};
int count;
int dis[505][505];
int startx, starty;
bool bfs(int mid)
{int sum = 1;memset(dis, -1, sizeof dis);queue<pair<int, int>> q;q.push({startx, starty});dis[startx][starty] = 0;if (sum == count){return true;}while (!q.empty()){auto t = q.front();q.pop();for (int i = 0; i < 4; i++){int nx = t.first + dx[i];int ny = t.second + dy[i];if (nx < 1 || ny < 1 || nx > n || ny > m){continue;}if (dis[nx][ny] != -1){continue;}int nd = abs(high[nx][ny] - high[t.first][t.second]);if (nd <= mid){dis[nx][ny] = dis[t.first][t.second] + 1;q.push({nx, ny});if (flag[nx][ny] == 1){sum++;if (sum == count){return true;}}}}}return false;
}
signed main()
{cin >> n >> m;for (int i = 1; i <= n; i++){for (int j = 1; j <= m; j++){cin >> high[i][j];}}count = 0;for (int i = 1; i <= n; i++){for (int j = 1; j <= m; j++){cin >> flag[i][j];if (flag[i][j] == 1){count++;if (startx == 0){startx = i;starty = j;}}}}int left = -1;int right = INT_MAX;while (left + 1 < right){int mid = (left + right) / 2;if (bfs(mid)){right = mid;}else{left = mid;}}cout << right;return 0;
}

 

 

http://www.lqws.cn/news/88885.html

相关文章:

  • 【使用】【经验】docker 清理未使用的镜像的命令
  • 【复习】软件测试
  • 【大模型:知识图谱】--1.py2neo连接图数据库neo4j
  • Ajax技术深度解析:从原理到现代Web开发实践
  • 让AI弹琴作曲不再是梦:Python+深度学习玩转自动化音乐创作
  • 61、ESB详解
  • MyBatis相关面试题
  • 【CBAP50技术手册】#34 Process Analysis(流程分析):业务分析师的“优化镜头”
  • 2025年06月03日Github流行趋势
  • C++和C#界面开发方式的全面对比
  • 爱果果H5素材网站
  • C++学习-入门到精通【13】标准库的容器和迭代器
  • rabbitMQ初入门
  • 【Kotlin】表达式关键字
  • SOC-ESP32S3部分:27-设备OTA
  • [Java 基础]Java 是什么
  • T/CCSA 663-2025《医疗科研云平台技术要求》标准解读与深度分析
  • 华为云Flexus+DeepSeek征文|DeepSeek-V3/R1 商用服务开通全流程与本地部署搭建
  • C++ Vector算法精讲与底层探秘:从经典例题到性能优化全解析
  • C++实现汉诺塔游戏用户交互
  • AI Agent开发第78课-大模型结合Flink构建政务类长公文、长文件、OA应用Agent
  • 【数据分析】第四章 pandas简介(2)
  • 线性回归用于分类
  • 景区停车预警系统:从检测到疏导,告别拥堵!
  • 第3篇:数据库路由模块设计与 SQL 路由策略解析
  • 通过基于流视频预测的可泛化双手操作基础策略
  • 【嵌入式(2)深入剖析嵌入式开发:从基础到实战】
  • 每日算法 -【Swift 算法】查找字符串数组中的最长公共前缀
  • 【Linux内核】设备模型之udev技术详解
  • 【数据库】安全性