查找细胞-BFS
Posted
tags:
篇首语:本文由小常识网(cha138.com)小编为大家整理,主要介绍了查找细胞-BFS相关的知识,希望对你有一定的参考价值。
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的主要内容,如果未能解决你的问题,请参考以下文章