#include<iostream> #include<vector> using namespace std; void dfs(vector<vector<char>>& s,int i,int j) { s[i][j] = '0'; int n = s.size(), m = s[0].size(); if(i-1>=0) { if(j-1>=0 && s[i-1][j-1] == '1') dfs(s,i-1,j-1); if(j+1 < m && s[i-1][j+1] == '1') dfs(s,i-1,j+1); if(s[i-1][j] == '1') dfs(s,i-1,j); } if(i+1 < n) { if(j-1>=0 && s[i+1][j-1] == '1') dfs(s,i+1,j-1); if(j+1 < m && s[i+1][j+1] == '1') dfs(s,i+1,j+1); if(s[i+1][j] == '1') dfs(s,i+1,j); } if(j-1>=0 && s[i][j-1] == '1') dfs(s,i,j-1); if(j+1 <= m && s[i][j+1] == '1') dfs(s,i,j+1); } int main() { int n, m; while(cin >> n >> m) { if(n == 0 && m == 0) break; vector<vector<char>> s(n, vector<char>(m)); for(int i = 0;i < n;i ++) { for(int j = 0;j < m;j ++) { cin >> s[i][j]; } } int num = 0; for(int i = 0;i < n;i ++) { for(int j = 0;j < m;j ++) { if(s[i][j] == '1') { num ++; dfs(s,i,j); } } } cout << num << endl; } return 0; } |
Double click to view unformatted code.