#include<bits/stdc++.h> using namespace std; char arr[125][125]; int dfs(int i, int j, int m, int n) { if (i > m || j > n || i < 1 || j < 1) { return 0; } if (arr[i][j] == 0) return 0; if (arr[i][j] == 1) { arr[i][j] = 0; dfs(i - 1, j, m, n); dfs(i - 1, j + 1, m, n); dfs(i - 1, j - 1, m, n); dfs(i, j + 1, m, n); dfs(i, j - 1, m, n); dfs(i + 1, j, m, n); dfs(i + 1, j + 1, m, n); dfs(i + 1, j - 1, m, n); } return 0; } int main() { int n, m; int sum; while (~scanf("%d%d", &m, &n)) { sum = 0; if (n == 0 && m == 0) { break; } for (int i = 1; i <= m; i++) { for (int j = 1; j <= n; j++) { scanf(" %c", &arr[i][j]); arr[i][j] = arr[i][j] - '0'; } } for (int i = 1; i <= m; i++) { for (int j = 1; j <= n; j++) { if (arr[i][j] == 1) { dfs(i, j, m, n); sum++; } } } printf("%d\n", sum); } return 0; } |
Double click to view unformatted code.