经典的BFS。

 #include <stdio.h>
#include <string.h> #define MAXNUM 105
#define MAXROW 105
#define MAXQUE 10005 char buf[MAXROW][MAXNUM];
char visit[MAXROW][MAXNUM]; typedef struct {
int x, y;
} pos_st; pos_st queue[MAXQUE];
int direct[][] = {{,-},{-,-},{-,},{-,},{,},{,},{,},{,-}};
int m, n;
int total; void bfs();
void search(); int main() {
int i; while (scanf("%d%d", &m, &n)!=EOF && (m||n)) {
getchar();
for (i=; i<m; ++i) {
gets(buf[i]);
}
bfs();
printf("%d\n", total);
} return ;
} void bfs() {
int i, j; total = ;
memset(visit, -, sizeof(visit)); for (i=; i<m; ++i)
for (j=; j<n; ++j)
if (buf[i][j]=='@' && visit[i][j]==-)
search(i, j);
} void search(int row, int col) {
int front, rear;
int x, y, newx, newy;
int i; front = rear = ;
total++;
visit[row][col] = total; if (visit[row][col] > ) {
queue[rear].x = row;
queue[rear].y = col;
rear++;
while (front != rear) {
x = queue[front].x;
y = queue[front].y;
front++;
for (i=; i<; ++i) {
newx = x+direct[i][];
newy = y+direct[i][];
if (newx>= && newx<m && newy>= && newy<n) {
if (buf[newx][newy] == '@' && visit[newx][newy]<) {
queue[rear].x = newx;
queue[rear].y = newy;
rear++;
visit[newx][newy] = total;
}
}
}
}
} }

【HDOJ】1241 Oil Deposits的更多相关文章

  1. HDOJ(HDU).1241 Oil Deposits(DFS)

    HDOJ(HDU).1241 Oil Deposits(DFS) [从零开始DFS(5)] 点我挑战题目 从零开始DFS HDOJ.1342 Lotto [从零开始DFS(0)] - DFS思想与框架 ...

  2. HDOJ/HDU 1241 Oil Deposits(经典DFS)

    Problem Description The GeoSurvComp geologic survey company is responsible for detecting underground ...

  3. HDU 1241 Oil Deposits --- 入门DFS

    HDU 1241 题目大意:给定一块油田,求其连通块的数目.上下左右斜对角相邻的@属于同一个连通块. 解题思路:对每一个@进行dfs遍历并标记访问状态,一次dfs可以访问一个连通块,最后统计数量. / ...

  4. hdu 1241 Oil Deposits(DFS求连通块)

    HDU 1241  Oil Deposits L -DFS Time Limit:1000MS     Memory Limit:10000KB     64bit IO Format:%I64d & ...

  5. HDU 1241 Oil Deposits(石油储藏)

    HDU 1241 Oil Deposits(石油储藏) 00 MS (Java/Others)    Memory Limit: 65536/32768 K (Java/Others)   Probl ...

  6. DFS(连通块) HDU 1241 Oil Deposits

    题目传送门 /* DFS:油田问题,一道经典的DFS求连通块.当初的难题,现在看上去不过如此啊 */ /************************************************ ...

  7. HDU 1241 Oil Deposits【DFS】

    解题思路:第一道DFS的题目--- 参看了紫书和网上的题解-- 在找到一块油田@的时候,往它的八个方向找,直到在能找到的范围内没有油田结束这次搜索 可以模拟一次DFS,比如说样例 在i=0,j=1时, ...

  8. hdoj 1241 Oil Deposits

    Oil Deposits Time Limit: 2000/1000 MS (Java/Others)    Memory Limit: 65536/32768 K (Java/Others)Tota ...

  9. hdu 1241:Oil Deposits(DFS)

    Oil Deposits Time Limit : 2000/1000ms (Java/Other)   Memory Limit : 65536/32768K (Java/Other) Total ...

随机推荐

  1. Sencha Touch id 和 itemId

    通过id获得组件: var view=Ext.getCmp('id'); 通过itemId获得组件: var view = ComponentQuery.query('view_xtype'), // ...

  2. IOS开发之NSPredicate谓词的用法

    编程的人员不管是上过大学还是从培训机构出来的或做后台的.前端的都应该SQL语句有所了解,我们知道,在SQL语句当中 where 条件表达式可以对二维关系表的数据做条件筛选.微软的C# .net中也实现 ...

  3. Java多线程概述

    /*多线程1.首先说进程,进程---就是正在进行的程序    每一个进程都有一个执行程序.该顺序是一个执行路径,或者叫一个控制单元 2.线程:就是进程中的一个独立的进程单元        线程在控制着 ...

  4. MyBatis拦截器:给参数对象属性赋值

    该拦截器的作用:在进行增加.修改等操作时,给数据模型的一些通用操作属性(如:创建人.创建时间.修改人.修改时间等)自动赋值. 该实现是在DAO层拦截,即存入DB前最后一层.后经分析,不是很合理,改为在 ...

  5. activemq spring 配置

    Apache ActiveMQ是最流行和最强大的开源消息集成模式服务器.Apache ActiveMQ是速度快,支持多跨语言的客户端和协议,带有易于使用企业集成模式和许多先进的功能在充分支持JMS 1 ...

  6. 【安装操作系统】VMware 中安装 Redhat 5

    引言 已有一台 Windows XP 家用机,安装 Linux 虚拟机,一不小心就会走弯路,因此本文提供一些入门级的经验来帮助你躲开歧途. 欢迎来到 lovickie 的博客 http://www.c ...

  7. Linux---文件类型及权限操作

    文件类型: 用ls命令查看目录下所属文件时,每行的第一个字母标识着文件对应的文件类型 '-':代表普通文件 'd':代表目录 'c':字符设备文件 'b':块设备文件 's':套接字文件 'l':符号 ...

  8. linux 源码安装软件原理

    make 与 configure 在使用类似 gcc 的编译器来进行编译的过程并不简单,因为一套软件并不会仅有一支程序,而是有一堆程序码文件.所以除了每个主程序与副程序均需要写上一笔编译过程的命令外, ...

  9. Missra开源前端框架

    Missra开源前端框架,官方网址:http://framework.missra.com

  10. MySQL数据库远程访问的权限

    GRANT ALL PRIVILEGES ON *.* TO 'user'@'%'IDENTIFIED BY 'passwd' WITH GRANT OPTION;