题目:

圣诞老人回到了北极圣诞区,已经快到12点了。也就是说极光表演要开始了。这里的极光不是极地特有的自然极光景象。而是圣诞老人主持的人造极光。

轰隆隆……烟花响起(来自中国的浏阳花炮之乡)。接下来就是极光表演了。

人造极光其实就是空中的一幅幅n*m的点阵图像。只是因为特别明亮而吸引了很多很多小精灵的目光,也成为了圣诞夜最美丽的一刻。

然而在每幅n*m的点阵图像中,每一个点只有发光和不发光两种状态。对于所有的发光的点,在空中就形成了美丽的图画。而这个图画是以若干个(s个)图案组成的。对于图案,圣诞老人有着严格的定义:对于两个发光的点,如果他们的曼哈顿距离(对于A(x1,y1)和B(x2,y2),A和B之间的曼哈顿距离为|x1-x2|+|y1-y2|)小于等于2。那么这两个点就属于一个图案……

小精灵们一边欣赏着极光,一边数着每一幅极光图像中的图案数。伴着歌声和舞蹈,度过了美丽的圣诞之夜。^_^

裸的bfs,强连通。我编的反而麻烦了,哎!

var
  f:array[-5..105,-5..105] of boolean;
  a:array[-5..105,-5..105] of char;
  t:array[-5..105,-5..105] of longint;
  k,n,m,i,j:longint;
procedure zz;
var i,j:longint;
begin
  for i:=1 to n do
    for j:=1 to m do
      f[i,j]:=true;
end;
procedure bfs(x,y:longint);
begin
  if (f[x+1,y]) and (a[x+1,y]='#') then beginf[x+1,y]:=false;t[x+1,y]:=k;bfs(x+1,y);end;
  if (f[x,y+1]) and (a[x,y+1]='#') then beginf[x,y+1]:=false;t[x,y+1]:=k;bfs(x,y+1);end;
  if (f[x-1,y]) and (a[x-1,y]='#') then beginf[x-1,y]:=false;t[x-1,y]:=k;bfs(x-1,y);end;
  if (f[x,y-1]) and (a[x,y-1]='#') then beginf[x,y-1]:=false;t[x,y-1]:=k;bfs(x,y-1);end;
  if (f[x+2,y]) and (a[x+2,y]='#') then beginf[x+2,y]:=false;t[x+2,y]:=k;bfs(x+2,y);end;
  if (f[x,y+2]) and (a[x,y+2]='#') then beginf[x,y+2]:=false;t[x,y+2]:=k;bfs(x,y+2);end;
  if (f[x-2,y]) and (a[x-2,y]='#') then beginf[x-2,y]:=false;t[x-2,y]:=k;bfs(x-2,y);end;
  if (f[x,y-2]) and (a[x,y-2]='#') then beginf[x,y-2]:=false;t[x,y-2]:=k;bfs(x,y-2);end;
  if (f[x+1,y+1]) and (a[x+1,y+1]='#') then beginf[x+1,y+1]:=false;t[x+1,y+1]:=k;bfs(x+1,y+1);end;
  if (f[x-1,y+1]) and (a[x-1,y+1]='#') then beginf[x-1,y+1]:=false;t[x-1,y+1]:=k;bfs(x-1,y+1);end;
  if (f[x+1,y-1]) and (a[x+1,y-1]='#') then beginf[x+1,y-1]:=false;t[x+1,y-1]:=k;bfs(x+1,y-1);end;
  if (f[x-1,y-1]) and (a[x-1,y-1]='#') then beginf[x-1,y-1]:=false;t[x-1,y-1]:=k;bfs(x-1,y-1);end;
end;
begin
  {assign(input,'light.in');
  assign(output,'light.out');
  reset(input);
  rewrite(output);}
  readln(n,m);
  for i:=1 to n do
    begin
      for j:=1 to m do
        read(a[i,j]);
      readln;
    end;
  for i:=1 to n do
    for j:=1 to m do
      if (a[i,j]='#') and (t[i,j]=0) then
        begin
          k:=k+1;
          zz;
          f[i,j]:=false;
          t[i,j]:=k;
          bfs(i,j);
        end;
  writeln(k);
  {close(input);
  close(output);}
end.

vijos1051题解的更多相关文章

  1. 2016 华南师大ACM校赛 SCNUCPC 非官方题解

    我要举报本次校赛出题人的消极出题!!! 官方题解请戳:http://3.scnuacm2015.sinaapp.com/?p=89(其实就是一堆代码没有题解) A. 树链剖分数据结构板题 题目大意:我 ...

  2. noip2016十连测题解

    以下代码为了阅读方便,省去以下头文件: #include <iostream> #include <stdio.h> #include <math.h> #incl ...

  3. BZOJ-2561-最小生成树 题解(最小割)

    2561: 最小生成树(题解) Time Limit: 10 Sec  Memory Limit: 128 MBSubmit: 1628  Solved: 786 传送门:http://www.lyd ...

  4. Codeforces Round #353 (Div. 2) ABCDE 题解 python

    Problems     # Name     A Infinite Sequence standard input/output 1 s, 256 MB    x3509 B Restoring P ...

  5. 哈尔滨理工大学ACM全国邀请赛(网络同步赛)题解

    题目链接 提交连接:http://acm-software.hrbust.edu.cn/problemset.php?page=5 1470-1482 只做出来四道比较水的题目,还需要加强中等题的训练 ...

  6. 2016ACM青岛区域赛题解

    A.Relic Discovery_hdu5982 Time Limit: 2000/1000 MS (Java/Others)    Memory Limit: 65536/65536 K (Jav ...

  7. poj1399 hoj1037 Direct Visibility 题解 (宽搜)

    http://poj.org/problem?id=1399 http://acm.hit.edu.cn/hoj/problem/view?id=1037 题意: 在一个最多200*200的minec ...

  8. 网络流n题 题解

    学会了网络流,就经常闲的没事儿刷网络流--于是乎来一发题解. 1. COGS2093 花园的守护之神 题意:给定一个带权无向图,问至少删除多少条边才能使得s-t最短路的长度变长. 用Dijkstra或 ...

  9. CF100965C题解..

    求方程 \[ \begin{array}\\ \sum_{i=1}^n x_i & \equiv & a_1 \pmod{p} \\ \sum_{i=1}^n x_i^2 & ...

随机推荐

  1. Java基础知识二次学习--第三章 面向对象

    第三章 面向对象   时间:2017年4月24日17:51:37~2017年4月25日13:52:34 章节:03章_01节 03章_02节 视频长度:30:11 + 21:44 内容:面向对象设计思 ...

  2. 3.Java 加解密技术系列之 SHA

    Java 加解密技术系列之 SHA 序 背景 正文 SHA-1 与 MD5 的比较 代码实现 结束语 序 上一篇文章中介绍了基本的单向加密算法 — — MD5,也大致的说了说它实现的原理.这篇文章继续 ...

  3. PHP开发微信模版消息换行的问题

    微信是个坑!微信是个坑!微信是个坑!重要的时间说三遍 关键的地方是空白换行符到底是什么也不说,百度说是"\n":但是在发送消息的时候发现原样输出,发现json_encode对\n进 ...

  4. R实现地理位置与经纬度相互转换

    本实例要实现目标通过输入城市名或者地名,然后找出其经度纬度值,以及通过可视化展现其线路流向以及周边地图展示 address_list数据: 山西省太原市小店区亲贤北街77号 贵州省贵阳市云岩区书香门第 ...

  5. Promise (2) 基本方法

    "I'm Captain Jack Sparrow" 加勒比海盗5上映,为了表示对杰克船长的喜爱,昨天闪现了几次模仿船长的走路姿势(哈哈哈,简直妖娆). 为了周天能去看电影,要赶紧 ...

  6. Python教程(2.4)——字符串

    2.2节讲过,Python中有字符串类型.在Python中,字符串用'或"括起,例如'abc'."qwerty"等都是字符串.注意'和"并不是字符串的内容. A ...

  7. OpenGL教程(3)——第一个三角形

    我们已经学会了创建窗口,这一讲,我们将学习如何使用现代OpenGL画一个三角形.在开始写代码之前,我们需要先了解一些OpenGL概念.本文会很长,请大家做好心理准备~ 注:以下OpenGL概念翻译自h ...

  8. 浅谈C语言指针

    下面就几种情况讨论指针. 一.指针和变量 变量是存储空间的别名,访问形式是直接访问. 指针访问内存地址是间接访问. 使用指针访问内存的场合:1.局部变量,参数传递    2.动态分配内存 指针本身也是 ...

  9. 页面中的平滑滚动——smooth-scroll.js的使用

    正常的本页面锚链接跳转的时候跟PPT似的,特别生硬,用户体验非常差. 这时候我们就可以借助smooth-scroll.js这个插件,来实现本页面的平滑的跳转. 1首先,导入必须的JS文件 <sc ...

  10. 机器学习:Python实现聚类算法(三)之总结

    考虑到学习知识的顺序及效率问题,所以后续的几种聚类方法不再详细讲解原理,也不再写python实现的源代码,只介绍下算法的基本思路,使大家对每种算法有个直观的印象,从而可以更好的理解函数中参数的意义及作 ...