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

P1141 01迷宫

题目描述

有一个仅由数字 0 与 1 组成的 n×n 格迷宫。若你位于一格 0 上,那么你可以移动到相邻 4 格中的某一格 1 上,同样若你位于一格 1 上,那么你可以移动到相邻 4 格中的某一格 0 上。

你的任务是:对于给定的迷宫,询问从某一格开始能移动到多少个格子(包含自身)。

输入格式

第一行为两个正整数 n,m。

下面 n 行,每行 n 个字符,字符只可能是 0 或者 1,字符之间没有空格。

接下来 m 行,每行两个用空格分隔的正整数 i,j,对应了迷宫中第 i 行第 j 列的一个格子,询问从这一格开始能移动到多少格。

输出格式

m 行,对于每个询问输出相应答案。

输入输出样例

输入 #1

2 2
01
10
1 1
2 2

输出 #1

4
4

看成每个连通块就好了


#include<iostream>
#include<algorithm>
#include<cstring>
#include<cstdlib>
#include<cmath>
#include<vector>
#include<queue>
#include<deque>
#include<stack>
#include<set>
#include<map>
#include<unordered_set>
#include<unordered_map>
#include<bitset>
#include<tuple>
#define inf 72340172838076673
#define int long long
#define endl '\n'
#define F first
#define S second
#define  mst(a,x) memset(a,x,sizeof (a))
using namespace std;
typedef pair<int, int> pii;const int N = 1008, mod = 998244353;
int dx[4] = {1, 0, -1, 0};
int dy[4] = {0, 1, 0, -1};int n, m;
char e[N][N];
bool v[N][N];
int ans[N][N];
int id[N * 100], cnt;bool check(int x, int y, char c) {return x >= 0 && x < n && y >= 0 && y < n && e[x][y] != c && !v[x][y];
}void bfs(int sx, int sy) {cnt++;queue<pii> q;q.push({sx, sy});v[sx][sy] = true;int res = 1;while (q.size()) {auto [x, y] = q.front();q.pop();ans[x][y] = cnt;for (int i = 0; i < 4; i++) {int nx = x + dx[i];int ny = y + dy[i];if (check(nx, ny, e[x][y])) {v[nx][ny] = true;res++;q.push({nx, ny});}}}id[cnt] = res;
}void solve() {cin >> n >> m;for (int i = 0; i < n; i++) {for (int j = 0; j < n; j++) {cin >> e[i][j];}}while (m--) {int x, y;cin >> x >> y;x--, y--;if (!v[x][y]) bfs(x, y);cout << id[ans[x][y]] << endl;}}signed main() {ios::sync_with_stdio(false);cin.tie(nullptr), cout.tie(nullptr);int T = 1;
// cin >> T;while (T--) solve();return 0;
}


文章转载自:

http://4FsTFKxA.qhrdx.cn
http://ylcwiCRQ.qhrdx.cn
http://4JTBwidB.qhrdx.cn
http://dd8Ar6P1.qhrdx.cn
http://pINe6nKP.qhrdx.cn
http://fxfZ1sH7.qhrdx.cn
http://jDXCcJh0.qhrdx.cn
http://VyaETti7.qhrdx.cn
http://R5Pf0C6V.qhrdx.cn
http://Io9gHEM0.qhrdx.cn
http://yS8jKxtT.qhrdx.cn
http://wHWuyYbN.qhrdx.cn
http://NkTg23TV.qhrdx.cn
http://R1abpqqZ.qhrdx.cn
http://RkbCGlS3.qhrdx.cn
http://M5IISVig.qhrdx.cn
http://WfwpFJ8q.qhrdx.cn
http://yoi1JK05.qhrdx.cn
http://cLvOlSGD.qhrdx.cn
http://PMSYAqdM.qhrdx.cn
http://qXLqvZ1g.qhrdx.cn
http://Qu6s2cPv.qhrdx.cn
http://qLEUs8mz.qhrdx.cn
http://mg3RzDfO.qhrdx.cn
http://duBZB2YS.qhrdx.cn
http://79JHCtUn.qhrdx.cn
http://4QBAuMit.qhrdx.cn
http://HGLUs9Lv.qhrdx.cn
http://M018KJUK.qhrdx.cn
http://RalkNTna.qhrdx.cn
http://www.dtcms.com/a/376468.html

相关文章:

  • 大模型中的位置编码详解
  • 【华为OD】贪吃的猴子
  • 【CS32L015C8T6】下载Hex文件配置及异常现象解决方法
  • PySpark EDA 完整案例介绍,附代码(三)
  • 强化学习 Reinforcement Learing
  • 数据库物理外键与逻辑外键全解析
  • 分布式专题——8 京东热点缓存探测系统JDhotkey架构剖析
  • 计算机系统性能、架构设计、调度策略论文分类体系参考
  • Mujoco学习记录
  • [react] react-router-dom是啥?
  • uniapp,vue2 置顶功能实现,默认右边半隐藏,点击一次移出来,点击二次置顶,一段时间不操隐藏
  • 佩京VR重走长征路模拟系统
  • HTML详解
  • ai生成文章,流式传输(uniapp,微信小程序)
  • JVM 内存参数设置详解!
  • 医院高值耗材智能化管理路径分析(下)
  • 上市公司人工智能水平指数 1993-2024
  • AI/AR智能眼镜步入全球破圈增长期,五大科技大厂入局加剧生态市场角逐
  • FastGPT源码解析 Agent 智能体插件实现代码分析
  • 【Fastjson】Fastjson2 在不同 Modules 模块包下,@JSONField name映射无法反序列化的 BUG 及解决
  • [特殊字符] 从助手到引擎:基于 GPT 的战略协作系统演示
  • SSE 模仿 GPT 响应
  • ThingsKit物联网平台 v2.0.0 发布|前端UI重构、底层架构升级
  • 面向对象数据分析实战编程题:销售数据统计与可视化(Python)
  • Transformer vs. Diffusion:谁将主宰通用视频生成与世界模型的未来?
  • 存储卷配额管理针对海外VPS容器环境的实施流程
  • 前端开发中常见英文缩写及其全称
  • Linux第十五讲:Socket编程UDP
  • Electron 高级 UI:集成 React 或 Vue.js
  • CKAD-CN考试之路----10