码迷,mamicode.com
首页 > 其他好文 > 详细

查找细胞(一)-BFS

时间:2016-06-13 06:31:00      阅读:176      评论:0      收藏:0      [点我收藏+]

标签:

http://codeup.cn/problem.php?cid=100000660&pid=7

#include<cstdio>
#include<queue>
using namespace std;

int dx[] = {0, 1, 0, -1};
int dy[] = {1, 0, -1, 0};
int cell[200][200];

void clear_cell(int i, int j)
{
  queue<int>que;
  que.push(i * 10000 + j); //compress (i,j) into int
  cell[i][j] = 0;
  while(!que.empty()) {
    int t = que.front();
    que.pop();
    int x = t / 10000;
    int y = t % 10000;
    for(int d = 0; d < 4; d++) {
      int tx = x + dx[d];
      int ty = y + dy[d];
      if(cell[tx][ty]) {
        que.push(tx * 10000 + ty);
        cell[tx][ty] = 0;
      }
    }
  }
}

int main()
{
  int n, m, i, j, sum = 0;
  scanf("%d%d", &n, &m);
  for(i = 1; i <= n; i++)
    for(j = 1; j <= m; j++)
      scanf("%1d", &cell[i][j]);
  for(i = 1; i <= n; i++) {
    for(j = 1; j <= m; j++) {
      if(cell[i][j]) {
        sum++;
        clear_cell(i, j);
      }
    }
  }
  printf("%d\n", sum);
  return 0;
}

/*
4 10
0234500067
1034560500
2045600671
0000000089
*/

 

查找细胞(一)-BFS

标签:

原文地址:http://www.cnblogs.com/4bytes/p/5579294.html

(0)
(0)
   
举报
评论 一句话评论(0
登录后才能评论!
© 2014 mamicode.com 版权所有  联系我们:gaon5@hotmail.com
迷上了代码!