View Code of Problem 62

#include<bits/stdc++.h>
using namespace std;
int xx[8]={-1,-1,0,1,1,1,0,-1};
int yy[8]={0,-1,-1,-1,0,1,1,1}; 
int n,k,ans;
char a[122][122];
int f[122][122];
int bfs(int x,int y){
	if(!f[x][y]&&a[x][y]=='1'){
		f[x][y]=1;
		for(int i=0;i<8;++i){
			int X=xx[i]+x;
			int Y=yy[i]+y;
			if(X>=0&&X<n&&Y>=0&&Y<k&&a[X][Y]=='1'&&f[X][Y]==0)
			bfs(X,Y);
		}
		return 1; 
	}
	return 0;
}
int main(){
	while(cin>>n>>k&&(n!=0||k!=0)){
		getchar();
		ans=0;
		for(int i=0;i<n;++i){
			for(int m=0;m<k;++m){
				cin>>a[i][m];
			}
			getchar();
		}
		memset(f,0,sizeof(f));
		for(int i=0;i<n;++i){
			for(int m=0;m<k;++m){
				ans+=bfs(i,m);
			}
		}
		cout<<ans<<endl;
	}
} 

Double click to view unformatted code.


Back to problem 62