CSU-ACM2016暑期集训训练4-BFS(F - Oil Deposits)
Time Limit:1000MS Memory Limit:32768KB 64bit IO Format:%I64d & %I64u
Description
GeoSurvComp地质调查公司负责探测地下石油储藏。 GeoSurvComp现在在一块矩形区域探测石油,并把这个大区域分成了很多小块。他们通过专业设备,来分析每个小块中是否蕴藏石油。如果这些蕴藏石油的小方格相邻,那么他们被认为是同一油藏的一部分。在这块矩形区域,可能有很多油藏。你的任务是确定有多少不同的油藏。
Input
输入可能有多个矩形区域(即可能有多组测试)。每个矩形区域的起始行包含m和n,表示行和列的数量,1<=n,m<=100,如果m =0表示输入的结束,接下来是n行,每行m个字符。每个字符对应一个小方格,并且要么是'*',代表没有油,要么是'@',表示有油。
Output
对于每一个矩形区域,输出油藏的数量。两个小方格是相邻的,当且仅当他们水平或者垂直或者对角线相邻(即8个方向)。
Sample Input
Sample Output
#include<iostream>
#include<stdio.h>
#include<queue>
#include<cstring>
using namespace std; int vis[][],n,m;
char Map[][]; struct node
{
int x,y;
}; queue<node> q; bool jd(int a,int b)
{
if(a>=&&a<n&&b>=&&b<m&&Map[a][b]=='@')
return true;
else return false;
} void BFS(node n){
while(!q.empty())q.pop();//初始化队列Q;
q.push(n);//可用结构体,也可以哈希一下
while(!q.empty()) {//当q不为空
node temp=q.front();//取出队首元素u;
q.pop();
int cx,cy;
cx=temp.x;
cy=temp.y;
if(jd(cx+,cy)&&vis[cx+][cy]==)
{//此区域合法且有油
vis[cx+][cy]=;//入队;访问标记;
temp.x=cx+;
temp.y=cy;
q.push(temp);
}
if(jd(cx+,cy+)&&vis[cx+][cy+]==)
{
vis[cx+][cy+]=;
temp.x=cx+;
temp.y=cy+;
q.push(temp);
}
if(jd(cx,cy+)&&vis[cx][cy+]==)
{
vis[cx][cy+]=;
temp.x=cx;
temp.y=cy+;
q.push(temp);
}
if(jd(cx-,cy+)&&vis[cx-][cy+]==)
{
vis[cx-][cy+]=;
temp.x=cx-;
temp.y=cy+;
q.push(temp);
}
if(jd(cx-,cy)&&vis[cx-][cy]==)
{
vis[cx-][cy]=;
temp.x=cx-;
temp.y=cy;
q.push(temp);
}
if(jd(cx-,cy-)&&vis[cx-][cy-]==)
{
vis[cx-][cy-]=;
temp.x=cx-;
temp.y=cy-;
q.push(temp);
}
if(jd(cx,cy-)&&vis[cx][cy-]==)
{
vis[cx][cy-]=;
temp.x=cx;
temp.y=cy-;
q.push(temp);
}
if(jd(cx+,cy-)&&vis[cx+][cy-]==)
{
vis[cx+][cy-]=;
temp.x=cx+;
temp.y=cy-;
q.push(temp);
}
}
} int main(){
while(cin>>n>>m)
{
if(n==&&m==) return ; for(int i=;i<n;i++)
for(int j=;j<m;j++)
cin>>Map[i][j]; memset(vis,,sizeof(vis)); int ans=;
node tp;
for(int i=;i<n;i++)
for(int j=;j<m;j++)
{
if(Map[i][j]=='@'&&vis[i][j]==)
{
tp.x=i;tp.y=j;
BFS(tp);
ans++;
}
}
printf("%d\n",ans);
}
return ;
}
CSU-ACM2016暑期集训训练4-BFS(F - Oil Deposits)的更多相关文章
- F - Oil Deposits 【地图型BFS+联通性】
The GeoSurvComp geologic survey company is responsible for detecting underground oil deposits. GeoSu ...
- 暑假集训(1)第七弹 -----Oil Deposits(Poj1562)
Description The GeoSurvComp geologic survey company is responsible for detecting underground oil dep ...
- 7.30 正睿暑期集训营 A班训练赛
目录 2018.7.30 正睿暑期集训营 A班训练赛 T1 A.蔡老板分果子(Hash) T2 B.蔡老板送外卖(并查集 最小生成树) T3 C.蔡老板学数学(DP NTT) 考试代码 T2 T3 2 ...
- 2014年CCNU-ACM暑期集训总结
2014年CCNU-ACM暑期集训总结 那个本期待已久的暑期集训居然就这种.溜走了.让自己有点措手不及.很多其它的是对自己的疑问.自己是否能在ACM这个领域有所成就.带着这个疑问,先对这个暑假做个总结 ...
- 2014 SCAU_ACM 暑期集训
暑期集训,希望能在这段时间获得对得起自己的提升吧 时间:7.11~8.30 集训各专题内容: 1.贪心,递推,基础DP(背包,区间DP,状态压缩DP(去年出了不少于2道铜牌题,看着办)) 2.搜索(B ...
- 8.10 正睿暑期集训营 Day7
目录 2018.8.10 正睿暑期集训营 Day7 总结 A 花园(思路) B 归来(Tarjan 拓扑) C 机场(凸函数 点分治) 考试代码 A B C 2018.8.10 正睿暑期集训营 Day ...
- 8.6 正睿暑期集训营 Day3
目录 2018.8.6 正睿暑期集训营 Day3 A 亵渎(DP) B 绕口令(KMP) C 最远点(LCT) 考试代码 A B C 2018.8.6 正睿暑期集训营 Day3 时间:5h(实际) 期 ...
- 8.9 正睿暑期集训营 Day6
目录 2018.8.9 正睿暑期集训营 Day6 A 萌新拆塔(状压DP) B 奇迹暖暖 C 风花雪月(DP) 考试代码 A B C 2018.8.9 正睿暑期集训营 Day6 时间:2.5h(实际) ...
- 8.8 正睿暑期集训营 Day5
目录 2018.8.8 正睿暑期集训营 Day5 总结 A 友谊巨轮(线段树 动态开点) B 璀璨光滑 C 构解巨树 考试代码 A B C 2018.8.8 正睿暑期集训营 Day5 时间:3.5h( ...
随机推荐
- GPS两点的距离
目前手头的一个项目要用到GPS地理定位信息,很自然的就需要知道两个地点之间的距离,于是上网找了一下,同样自然的就有一些算法贴出来..(网络真是帮了大忙,省得我再去翻几何书自己研究算法了!公式早都忘光了 ...
- Java循环语句 while
特点:先判断,后执行 如: public class HelloWorld { public static void main(String[] args) { int i = 1; // 代表 1 ...
- 在ubuntu上面配置nginx实现反向代理
1.下载nginx 官网:http://nginx.org/en/download.html 直接在服务器上下载 wget http://nginx.org/download/nginx- ...
- JFinal tomcat配置根路径(包括windows和linux)
http://my.oschina.net/u/173975/blog/350666 jfinal的demo直接部署到tomcat上,会由于路径问题导致资源加载不到,路径跳转不正确等问题,解决办法如下 ...
- iOS使用宏写单例
本文只介绍ARC情况下的单例 过去一直背不下来单例如何写,就是知道这么回事,也知道通过宏来写单例,但是一直记不住,今天就来记录一下 - (void)viewDidLoad { [super v ...
- 分享SVN的钩子代码[借鉴学习]pre-commit-post 钩子
#/bin/bash REPOS=$1 TXN=$2 export HOME=/ export PATH=/usr/local/sbin:/usr/local/bin:/sbin:/bin:/us ...
- 使用socket实现FTP程序
#-*- coding:utf-8 -*- import socketserver from module import * class server: def __init__(self,reque ...
- oracle中对LONG列进行查询
SQL> CREATE TABLE T_LONG (ID NUMBER, LONG_COL LONG); 表已创建. SQL> INSERT INTO T_LONG VALUES (1, ...
- About gpref O(n2) --> O(1)
http://www.ibm.com/developerworks/cn/linux/l-gperf.html 命令行处理和 gperf 的作用 命令行处理一直以来都是软件开发中最容易被忽视的领域.几 ...
- logstash multiline 把文件处理为单个 event
需求 多个文本文件需要存到 ES 中去. 每一个文件存放为一个 doc. 每一个文件都是多行的,行数不定,且没有固定的内容格式. update time: Mon Jun :: CST package ...