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( ...
随机推荐
- MySQL中UNION和UNION ALL的使用
在数据库中,UNION和UNION ALL关键字都是将两个结果集合并为一个,但这两者从使用和效率上来说都有所不同. MySQL中的UNION UNION在进行表链接后会筛选掉重复的记录,所以在表链接后 ...
- SCO连接AD / SCOM
SCO安装完成后,下载IP包,打开Deployment Manager注册IP包,并将其部属到Runbook Server SCO IP包下载地址:http://technet.microsoft.c ...
- Codeforces Round #322 (Div. 2) C. Developing Skills 优先队列
C. Developing Skills Time Limit: 1 Sec Memory Limit: 256 MB 题目连接 http://codeforces.com/contest/581/p ...
- S5PV210(TQ210)裸机编程
本文很多其它的是教会大家怎样学习. 4.1 汇编学习 4.1.1 基础知识 4.1.2 ARM模拟器 4.2 S5PV210启动流程 4.3 点亮一个LED 4.4 串 ...
- Struts2中的类型转换
1. Struts2中的类型转换 我们知道通过HTTP提交到后台的数据,都是字符串的形式,而我们需要的数据类型当然不只字符串类型一种.所以,我们需要类型转换! 在Struts2中,类型转换的概 ...
- linux内核系统调用和标准C库函数的关系分析
http://blog.csdn.net/skyflying2012/article/details/10044343
- 编写程序,查找并删除forward_list<int>中的奇数元素
#include<iostream> #include<forward_list> using namespace std; int main() { forward_list ...
- [021]转 C++ Pimpl机制
出处:http://www.cnblogs.com/gnuhpc/ 1.简介 这个机制是Private Implementation的缩写,我们常常听到诸如“不要改动你的公有接口”这样的建议,所以我们 ...
- Java 8 Date Time API Example Tutorial – LocalDate, Instant, LocalDateTime, Parse and Format
参考 Java 8 Date and Time API is one of the most sought after change for developers. Java has been mis ...
- (转)CentOS 6.5下Redis安装详细步骤
Redis简介:Redis是一个开源的使用ANSI C语言编写.支持网络.可基于内存亦可持久化的日志型.Key-Value数据库,并提供多种语言的API.从2010年3月15日起,Redis的开发工作 ...