HDU 1241 Oil Deposits (DFS/BFS)
Oil Deposits
Time Limit: 2000/1000 MS (Java/Others) Memory Limit: 65536/32768 K (Java/Others)
Total Submission(s): 15533 Accepted Submission(s): 8911
*
3 5
*@*@*
**@**
*@*@*
1 8
@@****@*
5 5
****@
*@@*@
*@**@
@@@*@
@@**@
0 0
1
2
2
#include <iostream>
#include <cstdio>
#include <queue>
using namespace std; const int SIZE = ;
char MAP[SIZE][SIZE];
int UPDATE[][] = {{-,},{,},{,-},{,},{-,-},{-,},{,-},{,}};
int N,M;
int ANS; struct Node
{
int x,y;
}QUE[SIZE * SIZE];
void dfs(int x,int y);
void bfs(int r,int c);
int main(void)
{
while(scanf("%d%d",&N,&M) && (N || M))
{
ANS = ;
for(int i = ;i <= N;i ++)
for(int j = ;j <= M;j ++)
scanf(" %c",&MAP[i][j]);
for(int i = ;i <= N;i ++)
for(int j = ;j <= M;j ++)
if(MAP[i][j] == '@')
{
ANS ++;
bfs(i,j);
}
printf("%d\n",ANS);
} return ;
} void dfs(int x,int y)
{
MAP[x][y] = '*';
int new_x,new_y;
for(int i = ;i < ;i ++)
{
new_x = x + UPDATE[i][];
new_y = y + UPDATE[i][];
if(new_x >= && new_x <= N && new_y >= && new_y <= M && MAP[new_x][new_y] == '@')
{
MAP[new_x][new_y] = '*';
dfs(new_x,new_y);
}
}
} void bfs(int r,int c)
{
MAP[r][c] = '*'; QUE[].x = r;
QUE[].y = c;
int front,rear;
front = ;
rear = ; while(front < rear)
{
int cur_x = QUE[front].x;
int cur_y = QUE[front].y;
front ++; for(int i = ;i < ;i ++)
{
int new_x = cur_x + UPDATE[i][];
int new_y = cur_y + UPDATE[i][];
if(new_x >= && new_x <= N && new_y >= && new_y <= M && MAP[new_x][new_y] == '@')
{
MAP[new_x][new_y] = '*';
QUE[rear].x = new_x;
QUE[rear].y = new_y;
rear ++;
}
}
}
}
HDU 1241 Oil Deposits (DFS/BFS)的更多相关文章
- HDOJ(HDU).1241 Oil Deposits(DFS)
HDOJ(HDU).1241 Oil Deposits(DFS) [从零开始DFS(5)] 点我挑战题目 从零开始DFS HDOJ.1342 Lotto [从零开始DFS(0)] - DFS思想与框架 ...
- HDU 1241 Oil Deposits DFS(深度优先搜索) 和 BFS(广度优先搜索)
Oil Deposits Time Limit: 2000/1000 MS (Java/Others) Memory Limit: 65536/32768 K (Java/Others) Total ...
- HDU 1241 Oil Deposits (DFS or BFS)
链接 : Here! 思路 : 搜索判断连通块个数, 所以 $DFS$ 或则 $BFS$ 都行喽...., 首先记录一下整个地图中所有$Oil$的个数, 然后遍历整个地图, 从油田开始搜索它所能连通多 ...
- HDU 1241 Oil Deposits DFS搜索题
题目大意:给你一个m*n的矩阵,里面有两种符号,一种是 @ 表示这个位置有油田,另一种是 * 表示这个位置没有油田,现在规定相邻的任意块油田只算一块油田,这里的相邻包括上下左右以及斜的的四个方向相邻的 ...
- HDU 1241 Oil Deposits --- 入门DFS
HDU 1241 题目大意:给定一块油田,求其连通块的数目.上下左右斜对角相邻的@属于同一个连通块. 解题思路:对每一个@进行dfs遍历并标记访问状态,一次dfs可以访问一个连通块,最后统计数量. / ...
- hdu 1241 Oil Deposits(DFS求连通块)
HDU 1241 Oil Deposits L -DFS Time Limit:1000MS Memory Limit:10000KB 64bit IO Format:%I64d & ...
- DFS(连通块) HDU 1241 Oil Deposits
题目传送门 /* DFS:油田问题,一道经典的DFS求连通块.当初的难题,现在看上去不过如此啊 */ /************************************************ ...
- HDU 1241 Oil Deposits(石油储藏)
HDU 1241 Oil Deposits(石油储藏) 00 MS (Java/Others) Memory Limit: 65536/32768 K (Java/Others) Probl ...
- hdu 1241:Oil Deposits(DFS)
Oil Deposits Time Limit : 2000/1000ms (Java/Other) Memory Limit : 65536/32768K (Java/Other) Total ...
随机推荐
- Spark生态之Spark MLbase/MLlib
- Himi的base64代码
// // DataHimi.cpp // Oh!MonsterMR // // Created by Himi on 12-3-8. // Copyright (c) 2012年 Augustimp ...
- No module named BeautifulSoup
遇到 No module named BeautifulSoup 错误,但是的确从官方下载了BeautifulSoup,并安装成功. 后来才发现,有两个BeautifulSoup的版本,一个是2012 ...
- crontab 定时任务格式
如下内容节选自<Linux Crontab 定时任务 命令详解> 用crontab -e 添加要执行的命令 添加的命令必须以如下格式: * * * * * /command path 前五 ...
- 快速切换目录软件推荐——autojump
受到<autojump: 在命令行下快速更改目录>的鼓动,决定试用下这个软件. 但ubuntu下的源貌似有些问题, sudo apt get install autojump 后,死活提示 ...
- HDU1874畅通工程续(floyd||dijkstra)
看了看floyd和dijkstra,然后就找了两个练习来捉 #include<iostream> #include<stdio.h> #include<string.h& ...
- ADO.NET 快速入门(四):从数据库填充 DataSet
从数据库获取数据很容易,处理数据更容易.如果想要从数据库获取只进.只读的数据流结果集,你可以使用 DataReader 执行命令并且检索它.关于如何使用 DataReader,请参考:使用 OLE D ...
- 脚本命令高级Bash脚本编程指南(31):数学计算命令
题记:写这篇博客要主是加深自己对脚本命令的认识和总结实现算法时的一些验经和训教,如果有错误请指出,万分感谢. 高等Bash脚本编程指南(31):数学盘算命令 成于坚持,败于止步 操作数字 factor ...
- synthesize(合成) keyword in IOS
synthesize creates setter and getter (从Objective-C 2.0开始,合成可自动生成存取方法) the setter is used by IOS to s ...
- HDU 4348 To the moon 可持久化线段树,有时间戳的区间更新,区间求和
To the moonTime Limit: 20 Sec Memory Limit: 256 MB 题目连接 http://acm.hust.edu.cn/vjudge/contest/view.a ...