#include<bits/stdc++.h> using namespace std; int mp[125][125]; void dfs(int i, int j, int n, int m) { if (i > n || j > m || i < 1 || j < 1) return; if (!mp[i][j]) return; if (mp[i][j]) { mp[i][j] = 0; dfs(i - 1, j, n, m); dfs(i - 1, j + 1, n, m); dfs(i - 1, j - 1, n, m); dfs(i, j + 1, n, m); dfs(i, j - 1, n, m); dfs(i + 1, j, n, m); dfs(i + 1, j + 1, n, m); dfs(i + 1, j - 1, n, m); return; } } int main() { int n, m; while (cin >> n >> m) { if (!n && !m) break; for (int i = 1; i <= n; i++) for (int j = 1; j <= m; j++) scanf("%1d", &mp[i][j]); int cnt = 0; for (int i = 1; i <= n; i++) { for (int j = 1; j <= m; j++) { if (mp[i][j]) { dfs(i, j, n, m); cnt++; } } } cout << cnt << endl; } return 0; } |
Double click to view unformatted code.