描述

在一个矩形区域内,有些地方有水,有些地方没水。所有相邻的有水的地方会共同组成一个水洼,小蝌蚪想在这块区域中找到一个最大的水洼来安家。

输入

有多组输入数据,每组第一行包含两个正整数n,m(n,m<=100),接下来n行,每行m个字符,“.”表示有水,“#”表示没水。

输出

对于每组输入数据输出一行,包含一个整数,表示最大的水洼的面积。

样例输入

3 3
###
###
##.
2 3
#..
..#
3 3
##.
#..
.##

样例输出

1
4
3

#include <iostream>
#include <cstdio>
#include <queue>
using namespace std;
#define SIZE 100
char map[SIZE][SIZE];
bool visited[SIZE][SIZE];struct node{int x,y;
};int BFS(int n,int m){int i,j,count,max=0;node tmp,p;queue<node> path;for (i=0;i<n;i++)for (j=0;j<m;j++){if (map[i][j]=='#')visited[i][j]=true;else if (map[i][j]=='.')visited[i][j]=false;}for (i=0;i<n;i++)for (j=0;j<m;j++)if (!visited[i][j]){count=0;tmp.x=i;tmp.y=j;path.push(tmp);visited[tmp.x][tmp.y]=true;while (!path.empty()){p=path.front();count++;path.pop();if (p.x-1>=0&&!visited[p.x-1][p.y]){tmp.x=p.x-1;tmp.y=p.y;path.push(tmp);visited[tmp.x][tmp.y]=true;}if (p.x+1<n&&!visited[p.x+1][p.y]){tmp.x=p.x+1;tmp.y=p.y;path.push(tmp);visited[tmp.x][tmp.y]=true;}if (p.y-1>=0&&!visited[p.x][p.y-1]){tmp.x=p.x;tmp.y=p.y-1;path.push(tmp);visited[tmp.x][tmp.y]=true;}if (p.y+1<m&&!visited[p.x][p.y+1]){tmp.x=p.x;tmp.y=p.y+1;path.push(tmp);visited[tmp.x][tmp.y]=true;}}if (count>max)max=count;}return max;
}int main(){int n,m,i,j;while (scanf("%d%d",&n,&m)!=EOF){getchar();for (i=0;i<n;i++){for (j=0;j<m;j++)scanf("%c",&map[i][j]);getchar();}printf("%d\n",BFS(n,m));}return 0;
}

赤裸裸的广搜题。~~嘿嘿,第一次写,AC了很开心。~。

小蝌蚪安家 bjfu 1143 广度优先遍历相关推荐

  1. #问题求解与编程# 实验三 G小蝌蚪安家

    小蝌蚪安家 发布时间: 2018年4月2日 20:48   时间限制: 1000ms   内存限制: 128M 描述 在一个矩形区域内,有些地方有水,有些地方没水.所有相邻的有水的地方会共同组成一个水 ...

  2. bjfu1143 小蝌蚪安家 解题报告

    搜索没判断重复 导致各种bug 广搜栈空间超了 深搜有调试了半天 真的无语了 记录一下 校内放了链接校外也访问不了 直接放题目 用visit数组记录是否出现在队列里面 数据结构学好 并且做的题目少的可 ...

  3. bjfu 1143 小蝌蚪安家(bfs入门)

    本人的第一题bfs搜索: 在一个矩形区域内,有些地方有水,有些地方没水.所有相邻的有水的地方会共同组成一个水洼,小蝌蚪想在这块区域中找到一个最大的水洼来安家. Input 有多组输入数据,每组第一行包 ...

  4. ACM 小蝌蚪安家 简单DFS

    描述 在一个矩形区域内,有些地方有水,有些地方没水.所有相邻的有水的地方会共同组成一个水洼,小蝌蚪想在这块区域中找到一个最大的水洼来安家. 输入 有多组输入数据,每组第一行包含两个正整数n,m(n,m ...

  5. 邻接表存储图的广度优先遍历

    试实现邻接表存储图的广度优先遍历. 函数接口定义: void BFS ( LGraph Graph, Vertex S, void (*Visit)(Vertex) ); 其中LGraph是邻接表存储 ...

  6. 数据结构与算法:终于可以用三种语言(C,C#,JavaScript)把图的广度优先遍历讲清楚了(推荐收藏)

    文章目录 邻接矩阵存储图的广度优先遍历过程分析 C语言实现队列编程 程序中加入图的处理函数 结果的再次分析 C#语言实现图的广度优先遍历.并显示广度优先遍历生成树 JavaScript语言实现图的广度 ...

  7. [js] 解释下深度优先遍历和广度优先遍历的区别及如何实现

    [js] 解释下深度优先遍历和广度优先遍历的区别及如何实现 1.深度优先采用堆栈结构,先进后出,所占的空间较小,执行时间较长: 2.广度优先采用队列结构先进先出,所占空间较大,执行时间短,空间换时间: ...

  8. 分别用邻接矩阵和邻接表实现图的深度优先遍历和广度优先遍历_数据结构与算法学习笔记:图...

    图: 图结构区别于线性结构和树型结构,区别可见下图 逻辑上的图(graph)结构由顶点(vertex)和边(edge)组成. 一个图结构G包含顶点集合V和边集合E,任何两个顶点之间可以有一个边表示两者 ...

  9. 深度、广度优先遍历算法python

    文章目录 一.深度优先 1.怎么抓住小偷 2.二叉树中的最大路径和 3.最大的岛屿 二.广度优先 1.树的右侧 2.合法的括号 3.寻找制高点 4.选课的智慧 一.深度优先 该篇学习笔记来自于< ...

最新文章

  1. ajax请求php保存数据格式,jQuery ajax与php进行数据交互(数据格式问题)
  2. java hashmap 输出_JAVA如何把HashMap内容输出到文本文件
  3. EPSON TCP/IP 通信
  4. __macosx_在5分钟内在MacOSX Lion中设置JAVA_HOME,MAVEN_HOME,ANT_HOME
  5. R语言爬虫系列6|动态数据抓取范例
  6. electron打包exe文件
  7. python回测函数_Python事件化回测双均线
  8. Express框架学习笔记-post请求参数的获取
  9. 如何VARCHART XGantt编写PDF文件
  10. 3D立体显示大屏幕拼接视频墙系统解决方案
  11. dtu连接mysql_数据中心使用dtu远程连接oracel 9i数据库问题
  12. 怎么样计算机械功率,电功率与机械功率的换算公式
  13. 2021牛客多校10F Train Wreck (贪心,思维题)
  14. 对腾讯云qcloud音视频通信SDK的调研(优缺点)
  15. 冲刺误区 | 一场失败的谷歌设计冲刺实践给我的启示
  16. 计算机开机显示器闪,电脑开机后显示器闪烁怎么办
  17. 小试ESP8266(一) 一只电阻, 几条语句, 摆脱深度睡眠反复重启的困扰
  18. java severlet 获取当前路径_Java 获取当前路径的方法总结
  19. Java语言发展简史
  20. pip3在Ubuntu下的安装、升级、卸载

热门文章

  1. 爵士鼓的学习 基本方法与介绍
  2. 32寸曲面屏显示器撸代码太爽了,送一个!
  3. 计算机软件著作权申请需要哪些材料
  4. 人民币与美元的汇率转换 ------Java实现
  5. 二阶齐次线性微分方程的通解公式_一二阶线性微分方程的通解公式
  6. 居然嘲笑我们没有Excel的这个功能,呵呵
  7. 小程序全局配置(app.json 源码分享)
  8. 2021年国开专科计算机应用基础终结性考试试题 内附word和ppt答案 (文尾直接下载)
  9. Google 面试学习手册,来看看谷歌,微软等大厂都面试什么
  10. 练习打字第一天!努力学习