1293 送给圣诞夜的极光

 时间限制: 1 s
 空间限制: 128000 KB
 题目等级 : 黄金 Gold
 
 
题目描述 Description

圣诞老人回到了北极圣诞区,已经快到12点了。也就是说极光表演要开始了。这里的极光不是极地特有的自然极光景象。而是圣诞老人主持的人造极光。 
  轰隆隆……烟花响起(来自中国的浏阳花炮之乡)。接下来就是极光表演了。 
  人造极光其实就是空中的一幅幅n*m的点阵图像。只是因为特别明亮而吸引了很多很多小精灵的目光,也成为了圣诞夜最美丽的一刻。 
  然而在每幅n*m的点阵图像中,每一个点只有发光和不发光两种状态。对于所有的发光的点,在空中就形成了美丽的图画。而这个图画是以若干个(s个)图案组成的。对于图案,圣诞老人有着严格的定义:对于两个发光的点,如果他们的曼哈顿距离(对于A(x1,y1)和B(x2,y2),A和B之间的曼哈顿距离为|x1-x2|+|y1-y2|)小于等于2。那么这两个点就属于一个图案…… 
  小精灵们一边欣赏着极光,一边数着每一幅极光图像中的图案数。伴着歌声和舞蹈,度过了美丽的圣诞之夜。^_^

输入描述 Input Description

第一行,两个数n和m。(1<=n,m<=100) 
接下来一共n行,每行m个字符。对于第i行第j个字符,如果其为“-”,那么表示该点不发光,如果其为“#”,那么表示该点发光。不可能出现其他的字符。

输出描述 Output Description

第一行,一个数s。

样例输入 Sample Input

19 48

------------------------------------------------

---####-----#-----#----------------------####---

--######----#-----#---------------------######--

-########--#-#---#-#####--#-##-##---#--########-

-###--###--#-#---#-#----#-##-##--#--#--###--###-

-###--###--#--#-#--######-#--#---#-#---###--###-

-########--#--#-#--#------#--#----##---########-

--######---#---#---######-#--#-----#----######--

---####----------------------------#-----####---

----------------------------------#-------------

------------------------------------------------

---###--#--------#------#-----------------------

--#---#-#---------------#-----------------------

-#------#-##--#-##--##-###-#-##-###--###-#--##--

-#------##--#-##-#-#----#--##--#---##---##-#----

-#------#---#-#--#--#---#--#---#---##----#--#---

--#---#-#---#-#--#---#--#--#---#---##---##---#--

---###--#---#-#--#-##---#--#---#---#-###-#-##---

------------------------------------------------

样例输出 Sample Output

4

/*
我们考虑提前把曼哈短距离处理出来,搜索时只走曼哈顿距离<=2的点
然后从第一个发亮的地方开始搜索,把它弄灭,再把能到的地方弄灭
最后统计还亮着的个数就是答案
*/
#include<cstdio>
#include<iostream>
#include<cstring> using namespace std;
int dx[]= {,,,,-,,,-,-,,-,,},
dy[]= {,,-,,,,-,,-,,,,-};//This is important!
bool g[][]= {};
int n,m,ans;
struct node
{
int x,y;
}q[]; void bfs(int x,int y)
{
int head=,tail=;
q[].x=x;q[].y=y;
g[x][y]=;
while(head<=tail)
{
x=q[head].x,y=q[head].y;
head++;
for(int i=;i<=;i++)
{
int xx=x+dx[i],yy=y+dy[i];
if(xx>=&&xx<=n&&yy>=&&yy<=m&&g[xx][yy])
{
tail++;
q[tail].x=xx;q[tail].y=yy;
g[xx][yy]=;
}
}
}
} int main()
{
scanf("%d%d",&n,&m);
for(int i=;i<=n;i++)
for(int j=;j<=m;j++)
{
char c; cin>>c;
if(c=='#') g[i][j]=;
}
ans=;
for(int i=;i<=n;i++)
for(int j=;j<=m;j++)
if(g[i][j])
{
ans++;bfs(i,j);
}
printf("%d\n",ans);
return ;
}

codevs1293送给圣诞夜的极光(bfs)的更多相关文章

  1. [vijos]1051送给圣诞夜的极光<BFS>

    送给圣诞夜的极光 题目链接:https://www.vijos.org/p/1051 这是一道很水很水的宽搜水题,我主要是觉得自己在搜素这一块有点生疏于是随便找了一题练手,找到这么一道水题,原本以为可 ...

  2. Codevs 1293 送给圣诞夜的极光

    1293 送给圣诞夜的极光  时间限制: 1 s  空间限制: 128000 KB  题目等级 : 黄金 Gold 题解  查看运行结果     题目描述 Description 圣诞老人回到了北极圣 ...

  3. Vijos1051. 送给圣诞夜的极光

    试题请參见: https://vijos.org/p/1051 题目概述 圣诞老人回到了北极圣诞区, 已经快到12点了. 也就是说极光表演要開始了. 这里的极光不是极地特有的自然极光景象. 而是圣诞老 ...

  4. 洛谷 P1454 圣诞夜的极光 == codevs 1293 送给圣诞夜的极光

    题目背景 圣诞夜系列~~ 题目描述 圣诞老人回到了北极圣诞区,已经快到12点了.也就是说极光表演要开始了.这里的极光不是极地特有的自然极光景象.而是圣诞老人主持的人造极光. 轰隆隆……烟花响起(来自中 ...

  5. 【宽搜】Vijos P1051 送给圣诞夜的极光

    题目链接: https://vijos.org/p/1051 题目大意: 给一张‘-’和‘#’的图,规定曼哈顿距离小于等于2的‘#’属于同一图案,求图案数.[曼哈顿距离:对于A(x1,y1)和B(x2 ...

  6. vijos P1051 送给圣诞夜的极光

    调了好久... #include <cstdio> #include <queue> using namespace std; char a[110*110]; /****** ...

  7. 洛谷 P1454 圣诞夜的极光

    P1454 圣诞夜的极光 题目背景 圣诞夜系列~~ 题目描述 圣诞老人回到了北极圣诞区,已经快到12点了.也就是说极光表演要开始了.这里的极光不是极地特有的自然极光景象.而是圣诞老人主持的人造极光. ...

  8. P1049送给圣诞夜的礼品(矩阵十大问题之四)

    https://vijos.org/p/1049 P1049送给圣诞夜的礼品 Accepted 标签:组合数学送给圣诞夜的礼物[显示标签]     返回代码界面 | 关闭   Pascal Pasca ...

  9. vijosP1049 送给圣诞夜的礼品

    vijosP1049 送给圣诞夜的礼品 链接:https://vijos.org/p/1049 [思路] 快速幂+矩阵转换. 将m次矩阵的转换看作是一次快速幂中的乘法操作,这样可以用O(log(k/m ...

随机推荐

  1. vue 使用vue-i18n做全局中英文切换

    1.vue-i18n安装 npm install vue-i18n --save-dev 2.在main.js文件中引入 import VueI18n from 'vue-i18n'; Vue.use ...

  2. 洛谷——P1594 护卫队

    P1594 护卫队 题目描述 护卫车队在一条单行的街道前排成一队,前面河上是一座单行的桥.因为街道是一条单行道,所以任何车辆都不能超车.桥能承受一个给定的最大承载量.为了控制桥上的交通,桥两边各站一个 ...

  3. CodeForces 【20C】Dijkstra?

    解题思路 heap+Dijkstra就能过.注意边是双向边,要用long long. 附上代码 #include <iostream> #include <queue> #in ...

  4. Window下的———JDK环境的配置

    1.先把JDK文件解压在一个文件夹里 2.去到 3.具体配置3个 具体按照这样文件路径配置.(CLASSPATH 需要添加一个   . ;加路径    ) 4.最后检验 显示出JDK版本号就表示配置成 ...

  5. 集合:ListIterator

    why ? when ? how ? what ? Java 集合框架图 有了 Iterator 为什么还要有 ListIterator 呢? Iterator 遍历的时候如果你想修改集合中的元素怎么 ...

  6. 瑞芯微ROCK960 RK3399烧录image后扩容rootfs

    问题描述: RK3399开发板烧录官网提供的ubuntu镜像: Ubuntu 16.04 Server arm64(下载地址:https://www.96boards.org/documentatio ...

  7. 【nginx】记录nginx+php-fpm实现大文件下载排坑的过程

    先上一段代码,支持大文件下载和断点续传,代码来源互联网. set_time_limit(0); // 省略取文件路径的过程,这里直接是文件完整路径 $filePath = get_save_path( ...

  8. LINUX-初始化一个文件系统

    mkfs /dev/hda1 在hda1分区创建一个文件系统 mke2fs /dev/hda1 在hda1分区创建一个linux ext2的文件系统 mke2fs -j /dev/hda1 在hda1 ...

  9. extract a page from a multiple pages pdf on Ubuntu OS

    extract a page from a multiple pages pdf 1 extract a page from a multiple pages pdf use pdftk packag ...

  10. jquery 选中设置的值

    select设置值为xxx选中:如下所示 $("#questionClass").val("xxx");