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

【题解-洛谷】P1506 拯救oibh总部

题目:P1506 拯救oibh总部

题目背景

oibh 总部突然被水淹没了!现在需要你的救援……

题目描述

oibh 被突来的洪水淹没了,还好 oibh 总部有在某些重要的地方起一些围墙。用 * 号表示,而一个四面被围墙围住的区域洪水是进不去的。

oibh 总部内部也有许多重要区域,每个重要区域在图中用一个 0 表示。

现在给出 oibh 的围墙建设图,问有多少个没被洪水淹到的重要区域。

输入格式

第一行为两个正整数 x , y x,y x,y

接下来 x x x 行,每行 y y y 个整数,由 *0 组成,表示 oibh 总部的建设图。

输出格式

输出没被水淹没的 oibh 总部的 0 的数量。

输入输出样例 #1

输入 #1

4 5
00000
00*00
0*0*0
00*00

输出 #1

1

输入输出样例 #2

输入 #2

5 5
*****
*0*0*
**0**
*0*0*
*****

输出 #2

5

说明/提示

对于 100 % 100\% 100% 的数据, 1 ≤ x , y ≤ 500 1 \le x,y \le 500 1x,y500

代码

#include<iostream>using namespace std;typedef pair<int, int> PII;
const int Maxx = 500 + 10, Maxy = 500 + 10;int x, y, hh, tt = -1, vis[Maxx][Maxy], sum;
char map[Maxx][Maxy];
PII q[Maxx * Maxy];void init(){hh = 0, tt = -1;
}void insert(int i, int j){q[++ tt] = {i, j};
}void dele(){hh ++;
}bool isempty(){return hh > tt;
}void bfs(int sx, int sy){init();insert(sx, sy);vis[sx][sy] = 1;map[sx][sy] = '*';int dx[4] = {-1, 1, 0, 0}, dy[4] = {0, 0, -1, 1};while(!isempty()){auto t = q[hh];dele();for(int i = 0; i < 4; i ++){int newx = t.first + dx[i], newy = t.second + dy[i];if(newx >= 0 && newx < x && newy >= 0 && newy < y && map[newx][newy] == '0' && !vis[newx][newy]){insert(newx, newy);vis[newx][newy] = 1;map[newx][newy] = '*';}}}
}int main(){scanf("%d%d", &x, &y);for(int i = 0; i < x; i ++){scanf("%s", map[i]);}for(int i = 0; i < x; i ++){if(map[i][0] == '0' && !vis[i][0]){ // 第一列bfs(i, 0);}if(map[i][y - 1] == '0' && !vis[i][y - 1]){ // 最后一列bfs(i, y - 1);}}for(int j = 0; j < y; j ++){if(map[0][j] == '0' && !vis[0][j]){ // 第一行bfs(0, j);}if(map[x - 1][j] == '0' && !vis[x - 1][j]){ // 最后一行bfs(x - 1, j);}}for(int i = 0; i < x; i ++){for(int j = 0; j < y; j ++){if(map[i][j] == '0'){sum ++;}}}printf("%d", sum);return 0;
}

结果

在这里插入图片描述
在这里插入图片描述

输出的区域之和是指每一个"0"之和

http://www.xdnf.cn/news/12864.html

相关文章:

  • MySQL之索引
  • 为什么线性回归的损失函数采用均方误差?——基于最大似然估计的深度解析
  • 使用rufus-4.3制作系统盘
  • 02-VMware创建与安装CentOS7详解
  • Axure Rp 11 安装、汉化、授权
  • 【和春笋一起学C++】(十八)C++函数新特性——引用变量用作函数参数
  • RabbitMQ 各类交换机
  • 台湾TEMI协会竞赛——0、竞赛介绍及开发板介绍
  • 10万QPS高并发请求,如何防止重复下单
  • 驭码CodeRider 2.0产品概述和快速入门
  • 【AIGC】RAGAS评估原理及实践
  • OD 算法题 B卷【模拟工作队列】
  • 互联网协议IPv6
  • 电工基础【9】万用表使用、维修查找思路
  • BeckHoff_FB --> SET SNR 功能块
  • agent基础概念
  • android binder(四)binder驱动详解2
  • 【C/C++】namespace + macro混用场景
  • 医院药品管理系统
  • javaSE复习(7)
  • 第四讲 进程控制
  • Power Query动态追加查询(不同工作簿下)
  • 论文略读:Position: AI Evaluation Should Learn from How We Test Humans
  • PLC入门【2】PLC的接线
  • 系统模块与功能设计框架
  • 对F1分数的基本认识
  • 【AI论文】VS-Bench:评估多智能体环境中的视觉语言模型(VLM)在策略推理与决策制定方面的能力
  • 个人感悟-构建1000人商业帝国的战略计划
  • vulnyx lower2 writeup
  • 【优选算法】分治