很长时间没发博客了,今天水一下

很多dalao说染色(普通的)过不了,

我怎么就过了

其实我也是今天才知道什么是染色(由@你听风在吼 dalao指导)

然后自己打了一个,也不知道叫不叫染色,反正是过了

QAQ

这个类似连通块,我们把一整个连通块进行整体标记,每次不管访问哪一个成员,都可以直接输出已经存好的

不多说废话,上代码

#include<bits/stdc++.h>
using namespace std;
int b[1001][1001],c[1001];//b是标记哪个点是属于哪个染色区,c是每个染色区的连通块个数
char a[1001][1001];//a是矩阵
int xx[5] = {0,1,-1,0,0},yy[5] = {0,0,0,1,-1};
int n,m,tot,ku = 1;//tot是统计连通块的,ku是染色区的"名称"
void ss(int x,int y){
tot ++;
for(int i = 1;i <= 4;i++){
int x2 = x + xx[i],y2 = y + yy[i];
if(a[x][y] != a[x2][y2] && b[x2][y2] == 0 && x2 <= n && x2 > 0 && y2 <= n && y2 > 0 ){//这里要注意,染过的就不能再染了,想想为什么
b[x2][y2] = ku;//染色
ss(x2,y2);
}
}
return;
}
int main(int argc, char const *argv[])
{
cin>>n>>m;
for(int i = 1;i <= n;++i) scanf("%s",a[i]+1);
for (int i = 1; i <= n; ++i)
{
for(int j = 1;j <= n;++j){
if(b[i][j] == 0){
b[i][j] = ku;//起点也要染色
ss(i,j);
c[ku] = tot;
tot = 0;//清空
ku ++;//换一个连通块的名称
}
}
}
for(int i = 1;i <= m;i++)
{
int x,y;
scanf("%d%d",&x,&y);
cout<<c[b[x][y]]<<endl;
}
return 0;
}

洛谷 p1141 01迷宫题解的更多相关文章

  1. 洛谷——P1141 01迷宫

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

  2. 洛谷P1141 01迷宫

    题目描述 有一个仅由数字0与1组成的n×n格迷宫.若你位于一格0上,那么你可以移动到相邻4格中的某一格1上,同样若你位于一格1上,那么你可以移动到相邻4格中的某一格0上. 你的任务是:对于给定的迷宫, ...

  3. 洛谷P1141 01迷宫【DFS】

    有一个仅由数字00与11组成的n \times nn×n格迷宫.若你位于一格0上,那么你可以移动到相邻44格中的某一格11上,同样若你位于一格1上,那么你可以移动到相邻44格中的某一格00上. 你的任 ...

  4. 洛谷 P1141 01迷宫

    看似普通的 bfs 题(实际上也不怎么难 主要是我太菜了) 题目链接:https://www.luogu.org/problemnew/show/P1141 如果直接用简单的bfs一顿求的话,会超时( ...

  5. 洛谷P1141 01迷宫【bfs】

    题目链接:https://www.luogu.org/problemnew/show/P1141 题意: 有一个填了0和1的n*n的格子,只能0走到1,1走到0 有m组询问(数据量是1e5),问某一个 ...

  6. 洛谷 - P1141 - 01迷宫 - dfs

    https://www.luogu.org/problemnew/show/P1141 能互相到达的格子的答案自然是一样的,第一次dfs标记联通块,第二次dfs把cnt传递到整个联通卡并顺手消除vis ...

  7. 洛谷P1238 走迷宫题解

    题目描述 有一个m*n格的迷宫(表示有m行.n列),其中有可走的也有不可走的,如果用1表示可以走,0表示不可以走,文件读入这m*n个数据和起始点.结束点(起始点和结束点都是用两个数据来描述的,分别表示 ...

  8. 洛谷P1238 走迷宫

    洛谷1238 走迷宫 题目描述 有一个m*n格的迷宫(表示有m行.n列),其中有可走的也有不可走的,如果用1表示可以走,0表示不可以走,文件读入这m*n个数据和起始点.结束点(起始点和结束点都是用两个 ...

  9. 洛谷P2832 行路难 分析+题解代码【玄学最短路】

    洛谷P2832 行路难 分析+题解代码[玄学最短路] 题目背景: 小X来到了山区,领略山林之乐.在他乐以忘忧之时,他突然发现,开学迫在眉睫 题目描述: 山区有n座山.山之间有m条羊肠小道,每条连接两座 ...

随机推荐

  1. Integrative Analysis of MicroRNAome, Transcriptome, and Proteome during the Limb Regeneration of Cynops orientalis (文献分享一组-翁海玉)

    文献名:Integrative Analysis of MicroRNAome, Transcriptome, and Proteome during the Limb Regeneration of ...

  2. kali 装好java后提示 -bash: /home/javainstall/jdk1.8.0_171/bin/java: 没有那个文件或目录

    [问题现象] 在/etc/profile配置里面也是配置好了的,并且该目录是有java的 [问题原因] 出现这个问题的原因:64位的系统,安装了32位的Java. [解决方案] 通过网络搜索,发现通过 ...

  3. Codeforces Round #533(Div. 2) C.Ayoub and Lost Array

    链接:https://codeforces.com/contest/1105/problem/C 题意: 给n,l,r. 一个n长的数组每个位置可以填区间l-r的值. 有多少种填法,使得数组每个位置相 ...

  4. nodejs 学习(1) http与fs

    var http=require("http"), fs=require('fs'); var server=http.createServer(function(req,res) ...

  5. Codeforces Round #202 (Div. 1) A. Mafia 推公式 + 二分答案

    http://codeforces.com/problemset/problem/348/A A. Mafia time limit per test 2 seconds memory limit p ...

  6. DTO和ViewModel的区别

    Data Transfer Object 数据传输对象 ViewModel 视图实体(我们在新建MVC项目是会发现Model文件夹下会有一些ViewModel实体) 简单的理解一下两者之间的区别,举个 ...

  7. apache配置优化 - 解决apache环境下网站访问速度慢的问题(重点参考)

    如果apche访问量过大,将会导致页面打开迟缓,下载速度也降低,如果由于经费和环境问题,集群方案没有得以应用.可以通过对Apache2增加模块MPM来进行优化, 这里我选择线程型MPM加以优化:  开 ...

  8. 对shell的简单认识

    shell是一个命令解释器: shell分为交互式shell和非交互式shell: 交互式shell就是命令行一问一答:非交互式shell是像shell文本那样,一次解析文本, 并未在命令行给我们作出 ...

  9. vs 2017注册码 激活码

    Visual Studio 2017(VS2017) 企业版 Enterprise 注册码:NJVYC-BMHX2-G77MM-4XJMR-6Q8QFVisual Studio 2017(VS2017 ...

  10. 阻塞 io 非阻塞 io 学习笔记

    阻塞 io 非阻塞 io 学习笔记