**链接 : ** Here!

**思路 : ** 搜索判断连通块个数, 所以 $DFS$ 或则 $BFS$ 都行喽...., 首先记录一下整个地图中所有$Oil$的个数, 然后遍历整个地图, 从油田开始搜索它所能连通多少块其他油田, 只需要把它所连通的油田个数减去, 就ok了


  1. /*************************************************************************
  2. > File Name: E.cpp
  3. > Author:
  4. > Mail:
  5. > Created Time: 2017年11月26日 星期日 10时51分05秒
  6. ************************************************************************/
  7. #include <iostream>
  8. #include <cstring>
  9. #include <cstdio>
  10. using namespace std;
  11. #define MAX_N 150
  12. int n, m;
  13. int total_num;
  14. int vis[MAX_N][MAX_N];
  15. int dx[8] = {0, 0, -1, 1, 1, -1, 1, -1};
  16. int dy[8] = {-1, 1, 0, 0, 1, -1, -1, 1};
  17. char G[MAX_N][MAX_N];
  18. void dfs(int x, int y) {
  19. vis[x][y] = 1;
  20. for (int i = 0 ; i < 8 ; ++i) {
  21. int now_x = x + dx[i];
  22. int now_y = y + dy[i];
  23. if (vis[now_x][now_y]) continue;
  24. if (now_x < 0 || now_x >= n || now_y < 0 || now_y >= m) continue;
  25. if (G[now_x][now_y] != '@') continue;
  26. vis[now_x][now_y] = 1;
  27. --total_num;
  28. dfs(now_x, now_y);
  29. }
  30. }
  31. void solve() {
  32. for (int i = 0 ; i < n ; ++i) {
  33. for (int j = 0 ; j < m ; ++j) {
  34. if (G[i][j] == '@') {
  35. ++total_num;
  36. }
  37. }
  38. }
  39. memset(vis, 0, sizeof(vis));
  40. for (int i = 0 ; i < n ; ++i) {
  41. for (int j = 0 ; j < m ; ++j) {
  42. if (G[i][j] != '@' || vis[i][j]) continue;
  43. dfs(i, j);
  44. }
  45. }
  46. }
  47. int main() {
  48. while (scanf("%d%d", &n, &m) != EOF) {
  49. if (n == 0 && m == 0) break;
  50. memset(G, 0, sizeof(G));
  51. total_num = 0;
  52. for (int i = 0 ; i < n ; ++i) {
  53. getchar();
  54. scanf("%s", G[i]);
  55. }
  56. solve();
  57. printf("%d\n", total_num);
  58. }
  59. return 0;
  60. }

HDU 1241 Oil Deposits (DFS or BFS)的更多相关文章

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

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

  2. HDU 1241 Oil Deposits DFS(深度优先搜索) 和 BFS(广度优先搜索)

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

  3. HDU 1241 Oil Deposits (DFS/BFS)

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

  4. HDU 1241 Oil Deposits DFS搜索题

    题目大意:给你一个m*n的矩阵,里面有两种符号,一种是 @ 表示这个位置有油田,另一种是 * 表示这个位置没有油田,现在规定相邻的任意块油田只算一块油田,这里的相邻包括上下左右以及斜的的四个方向相邻的 ...

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

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

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

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

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

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

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

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

  9. hdu 1241:Oil Deposits(DFS)

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

随机推荐

  1. VB.NET机房收费 &amp; 抽象工厂模式

    学习设计模式的时候,提到了一个专门訪问数据库的模式-抽象工厂模式,记得当时举样例理解的时候并未设计到数据库,仅仅是大概了了解了一下,如今对于机房收费系统涉及到了数据库的管理,借此机会好好学习一下.用常 ...

  2. 如何将hyper-v虚拟机转换成vmware的虚拟机- 转换SharePoint 2010 Information Worker Demonstration and Evaluation Virtual Machine (SP1)

    官方有一个用于SharePoint的demo用的虚拟机: 2010 Information Worker Demonstration and Evaluation Virtual Machine (S ...

  3. Erlang下与其他程序和语言的通信机制(1)

    在Erlang运行时中,提供了几种机制来实现与其它程序或者语言的通信.一种为分布式Erlang,一种为端口,其中端口分为普通端口和链入式驱动端口,还有后面引入的NIFs. 分布式Erlang:一个Er ...

  4. FZU 1894 志愿者选拔【单调队列】【monotone decreasing queue】

     Problem 1894 志愿者选拔 Accept: 1770    Submit: 5523 Time Limit: 1500 mSec    Memory Limit : 32768 KB  P ...

  5. 我的Android进阶之旅------&gt;android中getLocationInWindow 和 getLocationOnScreen的差别

    View.getLocationInWindow(int[] location) 一个控件在其父窗体中的坐标位置 View.getLocationOnScreen(int[] location) 一个 ...

  6. SpringMVC高速实现文件上传功能

    SpringMVC为我们封装了上传文件的功能,如今就试用一下 须要的jar包 我用的是Maven项目,就不须要到处下载Jar包了 SpringMVC的搭建 首先要在applicationContext ...

  7. 一条SQL语句求全年平均值

    一年有8760个小时!(才这么点...) 有个气候表,存储了当地从1到8760小时的温度数据.现在,要求全年的温度每天平均值. CREATE TABLE #Climate(h INT ,t DECIM ...

  8. Android内存解析(一)—从Linux系统内存逐步认识Android应用内存

    总述 Android应用程序被限制了内存使用上限,一般为16M或24M(具体看系统设置),当应用的使用内存超过这个上限时,就会被系统认为内存泄漏,被kill掉.所以在android开发时,管理好内存的 ...

  9. 0503 php中for与foreach的区别

    结论: foreach:只能用于数组和对象,如果是非索引数组,只可以用foreach. for:如果是索引数组,可以用for遍历. foreach循环结构是按照数组内部的指针去循环的,当 foreac ...

  10. UIView动画基础

    1 Position 平移 [UIView animateWithDuration:1.0 animations:^{ _blueView.centerX = self.view.width -100 ...