当前位置: 首页 > 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.xdnf.cn/news/789373.html

相关文章:

  • Spring 中如何开启事务?
  • 嵌入式学习笔记 - freeRTOS任务栈在初始化以及任务切换时的压栈出栈过程分析
  • 黑马程序员TypeScript课程笔记1(1-10)
  • 云开发实现新闻列表小程序
  • Cat.1与Cat.4区别及应用场景
  • QLora基础与进阶指南
  • 从汇编的角度揭秘C++引用,豁然开朗
  • 简简单单探讨下starter
  • 力扣面试150题--二叉搜索树中第k小的元素
  • 视频转换新选择:XMedia Recode v3.6.1.2,绿色便携版来袭
  • 【分布式技术】KeepAlived高可用架构科普
  • java复习 01
  • [Java 基础]打印金字塔
  • 股票指数期货的变动与股票价格指数的关系是什么?
  • Unity Version Control UVC报错:Not connected. Trying to re-connect…
  • 【刷机】从pixel刷回miui12的过程记录
  • git管理
  • 面试经验 对常用 LLM 工具链(如 LlamaFactory)的熟悉程度和实践经验
  • Neo4j 备份与恢复:原理、技术与最佳实践
  • MS9280,替代AD9280,10bit、35MSPS 模数转换器
  • 6.3 计算机网络面试题
  • BAPI_BATCH_CHANGE:修改批次的特征值
  • CppCon 2014 学习:Lightning Talk: Writing a Python Interpreter for Fun and Profit
  • 3步在小米13手机跑DeepSeek R1
  • 网络安全基础--第十天
  • 力扣刷题 -- 225. 用队列实现栈
  • 【复习】软件测试
  • 解决CSDN等网站访问不了的问题
  • 力扣HOT100之多维动态规划:5. 最长回文子串
  • 什么是AI芯片?