View Code of Problem 62

#include <stdio.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.


Back to problem 62