ACDREAM 02G 小晴天老师系列——可恶的墨水瓶(暴力专场)
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 小晴天老师系列——可恶的墨水瓶(暴力专场)相关推荐
- 小晴天老师系列——可恶的墨水瓶(floodfill)
G - 小晴天老师系列--可恶的墨水瓶 Time Limit: 2000/1000MS (Java/Others) Memory Limit: 128000/64000KB (Java/Others) ...
- G - 小晴天老师系列——可恶的墨水瓶
G - 小晴天老师系列--可恶的墨水瓶 Time Limit: 2000/1000MS (Java/Others) Memory Limit: 128000/64000KB (Java/Oth ...
- 小晴天老师系列——竖式乘法(暴力)
C - 小晴天老师系列--竖式乘法 Time Limit: 4000/2000MS (Java/Others) Memory Limit: 128000/64000KB (Java/Others) S ...
- D - 小晴天老师系列——晴天的后花园
D - 小晴天老师系列--晴天的后花园 Time Limit: 10000/5000MS (Java/Others) Memory Limit: 128000/64000KB (Java/Oth ...
- 小布老师 LoadRunner系列培训视频
分享一下我老师大神的人工智能教程!零基础,通俗易懂!http://blog.csdn.net/jiangjunshow 也欢迎大家转载本篇文章.分享知识,造福人民,实现我们中华民族伟大复兴! [V] ...
- 跟小博老师一起学习MyBatis ——MyBatis搭建运行环境
数据库 上回小傅老师与大伙聊了MyBatis是一款非常优秀的操作数据库的框架产品,所以大家先要安装好数据库,以便MyBatis能操作它.小傅老师用的是MYSQL数据库产品,当然你也可以使用MSSQL. ...
- 小博老师解析Java核心技术点 ——表单令牌(一)
2019独角兽企业重金招聘Python工程师标准>>> [理论知识] 我们在网站开发的过程中,经常需要会使用到form表单,表单提供了丰富的客户端与服务器端交互的控件.但是在开发过程 ...
- 小甲鱼老师《带你学C带你飞》的后续课程补充
小甲鱼老师的<带你学C带你飞>系列之前有预告,说有机器人电子制作的续集,但是这么久了还是没有等到,博主在这里根据自己的学习经历,推荐一些学习的资料,可以为小甲鱼老师填一下坑,读者可根据自己 ...
- 最全小布老师所有视频推荐--oracle视频资料库
很不错的oracle视频资料,很全很多,而且讲得很不错 ,强烈推荐 ~~~ 最全小布老师所有视频推荐--oracle视频资料库 King作品:Oracle RAC系列培训 共七集 完 http://w ...
最新文章
- Swift 换肤方案的实现使用SwiftTheme框架
- 安装llvmlite报错解决:RuntimeError: llvm-config failed executing, please point LLVM_CONFIG to the path for
- rtc关机闹钟6 AlarmManagerService研究
- 现在流行的源程序版本管理软件和项目管理软件
- asp.net mvc 权限过滤和单点登录(禁止重复登录)
- 【转】%~dp0是什么意思
- 还要做手机?罗永浩称还完债就重返科技行业
- 为什么董明珠愿意让她“孙子”喝飞鹤奶粉?
- dirent.h简介
- java 终止方法_Java中终止线程的三种方法
- 一维热传导的有限元求解基础与COMSOL弱形式实现
- linux串口编程(termios结构体说明)
- 安全牛3·15期间遭黑客攻击 阿里云成功抵御
- OSPF虚链路(学习笔记+实验验证)
- 大平台压榨亏损2000万怎么办?换流量变现策略才是王道!
- mysql创建应用账号
- Android短视频SDK
- QT编写磨砂玻璃效果函数
- PCB javascript实现个税5000计算
- 解决JVM堆内存不断扩容导致服务器内存耗尽的问题