洛谷 P1141 01迷宫(dfs)
https://www.luogu.org/problem/P1141
思路:找到每一个连通块,不同连通块的标记不同,给标记赋值成该连通块的数量
1 // luogu-judger-enable-o2 2 #include <cstdio> 3 #include <iostream> 4 #include <algorithm> 5 #include <cmath> 6 #include <queue> 7 #include <vector> 8 #include <cstring> 9 #include <map> 10 #define mem(a) memset(a,0,sizeof(a)) 11 using namespace std; 12 typedef long long ll; 13 const int maxn = 200005; 14 const ll INF = 0x3f3f3f3f3f; 15 int dir[8][2]= {2,1,1,2,-2,1,-1,2,2,-1,1,-2,-2,-1,-1,-2}; 16 int dir2[4][2]= {0,1,0,-1,1,0,-1,0}; 17 bool flag; 18 int vis[1005][1005],sum[1000005]; 19 int n,m,countt,num; 20 string s[1005]; 21 void dfs(int x,int y){ 22 countt++; 23 vis[x][y] = num; 24 for(int i = 0; i < 4; i++){ 25 int fx = x + dir2[i][0],fy = y + dir2[i][1]; 26 if(fx >=0 && fx < n && fy >=0 && fy < n && !vis[fx][fy] && s[x][y] == '0' && s[fx][fy] == '1') 27 dfs(fx,fy); 28 if(fx >=0 && fx < n && fy >=0 && fy < n && !vis[fx][fy] && s[x][y] == '1' && s[fx][fy] == '0') 29 dfs(fx,fy); 30 } 31 } 32 int main() 33 { 34 35 while(cin >> n >> m){ 36 mem(vis); 37 mem(sum); 38 num = 1; 39 for(int i = 0; i < n; i++) 40 cin >> s[i]; 41 for(int i = 0; i < n; i++){ 42 for(int j = 0; j < n; j++){ 43 if(vis[i][j] == 0) 44 { 45 countt = 0; 46 vis[i][j] = num; 47 dfs(i,j); 48 sum[num] = countt; 49 //cout << sum[num] << endl; 50 num++; 51 } 52 } 53 } 54 int x, y; 55 //for(int i = 1; i < num; i++) cout << sum[i] << endl; 56 for(int i = 0; i < m; i++){ 57 cin >> x >> y; 58 cout << sum[vis[x-1][y-1]] << endl; 59 } 60 } 61 return 0; 62 }
转载于:https://www.cnblogs.com/LLLAIH/p/11294057.html
洛谷 P1141 01迷宫(dfs)相关推荐
- 洛谷P1141 01迷宫【记忆化搜索】
题目链接:P1141 01迷宫 程序说明: 可以用bfs来做,但是数据毒瘤,如果每次询问都运行一次bfs,会有三个TLE..可以将路途经过的点储存起来并且记录答案,如果询问的点已经被记录了答案,直接输 ...
- 洛谷P1141 01迷宫
因为各种乱七八糟的原因,学搜索实在是学了太久了也咕了好久博客啊.准备再做一遍之前写过的题顺便补一下博客qwq 01迷宫 [题目链接](https://www.luogu.org/problemnew/ ...
- 洛谷 P1238 走迷宫【搜索】【DFS】
洛谷 P1238 走迷宫 一.题目链接 二.题目分析 (一)算法标签 (二)解题思路 三.AC代码 四.其它题解 一.题目链接 洛谷 P1238 走迷宫 二.题目分析 (一)算法标签 搜索 DFS ( ...
- 洛谷 P1433 吃奶酪 dfs剪枝
洛谷 P1433 吃奶酪 dfs剪枝 题解: dfs+剪枝,不过现在好像被卡时间了,第10个点过不了.. 代码如下: #include<iostream> #include<algo ...
- bfs:01迷宫(洛谷P1141)
洛谷传送门 解析 乍一看:bfs板子题 冰法师最棒了 然鹅 看了一眼数据范围 心中已有画面 <面 堂 发 黑> 怎么办嘞? 我们想到: 因为该题来与去的可逆性 我们搜一次后,这些点以后都不 ...
- 洛谷P1363 幻象迷宫(DFS)
输入样例#1: 5 4 ##.# ##S# #-# #.## #-# 5 4 ##.# ##S# #-# -#. #.## 输出样例#1: Yes No 大概就是说给出一个01迷宫类的地图,按照这个地 ...
- 2019.03.04【ZJOI2018】【BZOJ5213】【洛谷P4339】迷宫(自动机)(数论)
BZOJ传送门 洛谷传送门 解析: 这道题本质其实是要最小化一个能够接受所有mmm进制下KKK的倍数的自动机. 显然我们有一个方案就是KKK个节点,iii的第jjj条边向(i∗m+j)%K(i*m+j ...
- 01迷宫(洛谷-P1141)
题目描述 有一个仅由数字0与1组成的n×n格迷宫.若你位于一格0上,那么你可以移动到相邻4格中的某一格1上,同样若你位于一格1上,那么你可以移动到相邻4格中的某一格0上. 你的任务是:对于给定的迷宫, ...
- 洛谷P1605:迷宫(DFS)
题目背景 迷宫 [问题描述] 给定一个N*M方格的迷宫,迷宫里有T处障碍,障碍处不可通过.给定起点坐标和终点坐标,问: 每个方格最多经过1次,有多少种从起点坐标到终点坐标的方案.在迷宫中移动有上下左右 ...
最新文章
- “夸夸机器人”App来了:变身百万粉丝大V,48万人给你的帖子点赞
- CISCO PIX/ASA Failover 技术初步学习
- 公钥,私钥,SSL(讲的很生动)
- 服务器升级中不能修改,windows10下更新服务器为何改不了了
- div禁用,不可点击
- Mysql 必知必会(一)
- Vue移动端项目——Vant 移动端 REM 适配
- 数据结构-哈希与映射
- jQuery中ajax请求的六种方法(三、五):$.getScript()方法
- 解决UICollectionViewCell/UITableViewCell因重用机制导致的错乱问题
- 北美程序员面试常见问题
- 窥探JAVA WEB
- microsoft mysql下载_MySQL下载与安装+Jmeter
- 攻防世界 mobile 安卓移动端简单题练习区 答题(1-12题解)
- checking for tgetent()... configure: error: NOT FOUND!
- ucinet计算聚类系数大于1怎么办_ucinet使用说明技巧.ppt
- 国内浏览器双核模式 默认切换chrome内核
- 一款用C++语言实现的3D游戏引擎(附源码),适用于想学3D游戏开发
- Caché 实操《Caché 算法与数据结构-数组原理》学习笔记
- 人物渲染篇(一) —— 基础卡通渲染 上
热门文章
- CDLL和WinDLL的区别
- 这些Python代码技巧,你肯定还不知道
- CVPR2020| 最新CVPR2020论文抢先看,附全部下载链接!
- 收藏!目标检测优质综述论文总结!
- 收藏 | 评述深度学习的发展
- 何恺明组又出神作!最新论文提出全景分割新方法
- python导入requests库一直报错原因总结_python pip 安装库文件报错:pip install ImportError: No module named _internal...
- 梯度下降法-深度AI
- Python3 Ocr 初探
- tar (child): bzip2: Cannot exec: No such file or directory