View Code of Problem 62

#include <iostream>
using namespace std;

void find(int s[][130],int m,int n){
    s[m][n] = 0;
    int i,j;
    for(i=m-1;i<=m+1;i++){
        for(j=n-1;j<=n+1;j++){
            if(s[i][j]==1)
                find(s,i,j);
        }
    }
}

int main(){
    int m,n,k;
    int s[130][130]={0};
    char c;
    while(scanf("%d %d",&m,&n)!=EOF&&m!=0&&n!=0){
        getchar();
        for(int j=1;j<=m;j++){
            for (int i=1; i<=n; i++) {
                scanf("%c",&c);
                s[j][i] = c - '0';
            }
        }
        
        k=0;
        for(int i=1;i<=m;i++){
            for(int j=1;j<=n;j++){
                if(s[i][j]==1){
                    find(s,i,j);
                    k++;
                }
            }
        }
        printf("%d\n",k);
    }
    return 0;
}

Double click to view unformatted code.


Back to problem 62