洛谷 P1141 01迷宫

简介: 洛谷 P1141 01迷宫

题目描述

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

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


输入格式

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

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

输出格式

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

输入输出样例

输入

2 2

01

10

1 1

2 2

输出

4

4


说明/提示

所有格子互相可达。

对于 20% 的数据,n≤10;

对于 40% 的数据,n≤50;

对于50% 的数据,m≤5;

对于60% 的数据,n,m≤100;

对于 100% 的数据,n≤1000,m≤100000。

#include<bits/stdc++.h>
using namespace std;
const int M=1010;
int n,m;
int vis[M][M];
bool mp[M][M];
int xx[]={0,1,-1,0};
int yy[]={1,0,0,-1};
int color,cnt,ans[1000010];
void bfs(int x,int y)
{
  queue<int>h;
  queue<int>l;
  h.push(x);
  l.push(y);
  vis[x][y]=color;
  while(!l.empty())
  {
    for(int i=0;i<4;i++)
    {
      int dx=h.front()+xx[i];
      int dy=l.front()+yy[i];
      if(dx>=1&&dx<=n&&dy>=1&&dy<=n&&!vis[dx][dy]&&mp[dx][dy]!=mp[h.front()][l.front()])
      {
        h.push(dx);
        l.push(dy);
        vis[dx][dy]=color;
      }
    }
    h.pop();
    l.pop();
    cnt++;
  }
}
int main()
{
  cin>>n>>m;
  for(int i=1;i<=n;i++)
  {
    for(int j=1;j<=n;j++)
    {
      char x;
      cin>>x;
      if(x=='1') mp[i][j]=1;
      else mp[i][j]=0;
    }
  }
  for(int i=1;i<=n;i++)
  {
    for(int j=1;j<=n;j++)
    {
      if(!vis[i][j])
      {
        color++;
        bfs(i,j);
        ans[color]=cnt;
        cnt=0;
      }
    }
  }
  for(int i=1;i<=m;i++)
  {
    int x,y;
    cin>>x>>y;
    cout<<ans[vis[x][y]]<<endl;
  }
  return 0;
}
目录
相关文章
|
小程序 C#
C#WinForm实现Loading等待界面
上篇博客中解决了程序加载时屏幕闪烁的问题。 但是,加载的过程变得很缓慢。 这个给用户的体验也不是很好,我这里想加一个Loading的进度条。 项目启动的时候,加载进度条,界面UI加载完毕,进度条消失。
729 0
|
10月前
|
存储 数据采集 人工智能
面向AGI时代的数据存储、管理与应用
本次分享由阿里云智能集团解决方案架构师王太平主讲,主题为面向AGI时代的数据存储、管理与应用。内容涵盖AGI的演进、人工智能发展的关键因素、开发框架对存储基础设施的挑战、数据预处理、大数据训练、微调、推理及落地过程。重点讨论了阿里云在数据存储和管理方面的设计与实践,包括高性能存储、成本优化和数据安全检测等功能,旨在应对AI时代的复杂需求。
247 15
阿里云容器服务 ACK 产品技术动态(202312)
阿里云容器服务 ACK 产品技术动态(202312)
|
存储 算法 Python
Python图论实战:从零基础到精通DFS与BFS遍历,轻松玩转复杂网络结构
【7月更文挑战第11天】图论在数据科学中扮演关键角色,用于解决复杂网络问题。Python因其易用性和库支持成为实现图算法的首选。本文通过问答形式介绍DFS和BFS,图是节点和边的数据结构,遍历用于搜索和分析。Python中图可表示为邻接表,DFS用递归遍历,BFS借助队列。DFS适用于深度探索,BFS则用于最短路径。提供的代码示例帮助理解如何在Python中应用这两种遍历算法。开始探索图论,解锁更多技术可能!
344 6
|
消息中间件 缓存 前端开发
JS案例:实现一个简单的任务队列-TaskQueue
JS案例:实现一个简单的任务队列-TaskQueue
836 0
JS案例:实现一个简单的任务队列-TaskQueue
|
资源调度 Kubernetes 应用服务中间件
Deployment的创建、滚动更新、回滚版本、扩容缩容
Deployment的创建、滚动更新、回滚版本、扩容缩容
544 1
|
自然语言处理 安全 Linux
干货 | Elasticsearch 8.X 版本升级指南
干货 | Elasticsearch 8.X 版本升级指南
|
Linux 数据处理
什么是零拷贝
什么是零拷贝
|
C++
[项目配置] 配置Qt函数库和ui界面库的封装并调用的项目(二)
[项目配置] 配置Qt函数库和ui界面库的封装并调用的项目
253 0
|
前端开发
【(不用Ajax)解决 Layui 插件分页点下一页后又自动跳回前一页的问题】
【(不用Ajax)解决 Layui 插件分页点下一页后又自动跳回前一页的问题】
323 0