ACDREAM 02G 小晴天老师系列——可恶的墨水瓶

Problem Description

小晴天老师正在备课,这时,可恶的墨水瓶突然自己打翻了!悲剧发生了!小晴天的备课稿都被墨水弄脏了。。。。

不过小晴天很乐观~这时他把他的一张纸分成n*m个格子,其中有一些格子被墨水涂黑了,有的没有。那么小晴天想知道,最大的一块联通的墨水块占多少个格子呢?

所谓的联通的即两个格子至少有一个公共顶点。
Input

多组数据,首先是一个正整数t(t<=20)

对于每组数据,先给出两个整数m.n(1<=n,m<=20)

然后是一个m行n列的01矩阵,若为1,则该格子被墨水染黑。
Output
对于每组数据,输出一个整数,表示最大被墨水染黑的连通格子数。
Sample Input

1
4 4
1 1 0 0
0 1 1 0
0 0 1 0
1 0 0 0

Sample Output

5

解题思路:找最大连通图,找完记得标记,下次被访问过的点就不能再访问了。

#include <cstdio>
#include <cstring>
#include <algorithm>
#include <cmath>
#include <cstdlib>
#define N 25
using namespace std;
typedef long long ll;
int n, m;
int Max, head, tail, cnt;
int dir[8][2] = {{1, 0}, {1, -1}, {1, 1}, {0, 1}, {0, -1}, {-1, -1}, {-1, 1}, {-1, 0}};
int map[N][N];
struct pos{int x, y;
}p[500], temp;
void BFS() {while (head < tail) {temp = p[head]; for (int i = 0; i < 8; i++) {int px = temp.x + dir[i][0];int py = temp.y + dir[i][1];if (px < 0 || py < 0) continue;if (px > n || py > m) continue;if (map[px][py] == 1) {p[tail].x = px;p[tail].y = py;tail++;cnt++;map[px][py] = 2;}}head++;}
}
int main() {int T;scanf("%d", &T);while (T--) {memset(map, 0, sizeof(map));scanf("%d %d", &n, &m);for (int i = 0; i < n; i++) {for (int j = 0; j < m; j++) {scanf("%d", &map[i][j]);}}Max = 0;for (int i = 0; i < n; i++) {for (int j = 0; j < m; j++) {if (map[i][j] == 1) {cnt = 1;head = tail = 0;map[i][j] = 2;p[head].x = i;p[head].y = j;tail++;BFS();Max = max(Max, cnt);}}}printf("%d\n", Max);}return 0;
}

ACDREAM 02G 小晴天老师系列——可恶的墨水瓶(暴力专场)相关推荐

  1. 小晴天老师系列——可恶的墨水瓶(floodfill)

    G - 小晴天老师系列--可恶的墨水瓶 Time Limit: 2000/1000MS (Java/Others) Memory Limit: 128000/64000KB (Java/Others) ...

  2. G - 小晴天老师系列——可恶的墨水瓶

    G - 小晴天老师系列--可恶的墨水瓶 Time Limit:  2000/1000MS (Java/Others)    Memory Limit: 128000/64000KB (Java/Oth ...

  3. 小晴天老师系列——竖式乘法(暴力)

    C - 小晴天老师系列--竖式乘法 Time Limit: 4000/2000MS (Java/Others) Memory Limit: 128000/64000KB (Java/Others) S ...

  4. D - 小晴天老师系列——晴天的后花园

    D - 小晴天老师系列--晴天的后花园 Time Limit: 10000/5000MS (Java/Others)    Memory Limit: 128000/64000KB (Java/Oth ...

  5. 小布老师 LoadRunner系列培训视频

    分享一下我老师大神的人工智能教程!零基础,通俗易懂!http://blog.csdn.net/jiangjunshow 也欢迎大家转载本篇文章.分享知识,造福人民,实现我们中华民族伟大复兴! [V]  ...

  6. 跟小博老师一起学习MyBatis ——MyBatis搭建运行环境

    数据库 上回小傅老师与大伙聊了MyBatis是一款非常优秀的操作数据库的框架产品,所以大家先要安装好数据库,以便MyBatis能操作它.小傅老师用的是MYSQL数据库产品,当然你也可以使用MSSQL. ...

  7. 小博老师解析Java核心技术点 ——表单令牌(一)

    2019独角兽企业重金招聘Python工程师标准>>> [理论知识] 我们在网站开发的过程中,经常需要会使用到form表单,表单提供了丰富的客户端与服务器端交互的控件.但是在开发过程 ...

  8. 小甲鱼老师《带你学C带你飞》的后续课程补充

    小甲鱼老师的<带你学C带你飞>系列之前有预告,说有机器人电子制作的续集,但是这么久了还是没有等到,博主在这里根据自己的学习经历,推荐一些学习的资料,可以为小甲鱼老师填一下坑,读者可根据自己 ...

  9. 最全小布老师所有视频推荐--oracle视频资料库

    很不错的oracle视频资料,很全很多,而且讲得很不错 ,强烈推荐 ~~~ 最全小布老师所有视频推荐--oracle视频资料库 King作品:Oracle RAC系列培训 共七集 完 http://w ...

最新文章

  1. Swift 换肤方案的实现使用SwiftTheme框架
  2. 安装llvmlite报错解决:RuntimeError: llvm-config failed executing, please point LLVM_CONFIG to the path for
  3. rtc关机闹钟6 AlarmManagerService研究
  4. 现在流行的源程序版本管理软件和项目管理软件
  5. asp.net mvc 权限过滤和单点登录(禁止重复登录)
  6. 【转】%~dp0是什么意思
  7. 还要做手机?罗永浩称还完债就重返科技行业
  8. 为什么董明珠愿意让她“孙子”喝飞鹤奶粉?
  9. dirent.h简介
  10. java 终止方法_Java中终止线程的三种方法
  11. 一维热传导的有限元求解基础与COMSOL弱形式实现
  12. linux串口编程(termios结构体说明)
  13. 安全牛3·15期间遭黑客攻击 阿里云成功抵御
  14. OSPF虚链路(学习笔记+实验验证)
  15. 大平台压榨亏损2000万怎么办?换流量变现策略才是王道!
  16. mysql创建应用账号
  17. Android短视频SDK
  18. QT编写磨砂玻璃效果函数
  19. PCB javascript实现个税5000计算
  20. 解决JVM堆内存不断扩容导致服务器内存耗尽的问题

热门文章

  1. 编程语言中双下划线的用法(待完善)
  2. c语言 愚人节的礼物,愚人节的礼物 hdu1870
  3. AIE初探——贵州省地形分析
  4. mysql 文件在哪里下载地址_MySql 下载地址、安装教程及基础知识教程
  5. linux系统查看网关
  6. 创业不易,阿里云懂你!云上企业注册仅9.9元
  7. 深度挖掘:腾讯云存储背后的故事
  8. 拼多多新店能开直播吗?直播前需要注意什么?
  9. 【工业物联网】“哑设备”和“铁疙瘩”才是工业物联网平台的救命稻草!
  10. phonton的配置