AOJ0118

問題:Property Distribution
やるだけ問題。
再帰苦手なので再帰で書いた。
入力がw,hの順じゃなくてh,wの順でWAした。

#include<iostream>
using namespace std;

int dx[] = {0,0,1,-1};
int dy[] = {1,-1,0,0};

int dfs( char f[110][110] ,char c, int x , int y )
{
	if( f[y][x] == c )
	{
		f[y][x] = 0;
		for( int i=0;i<4; ++i )dfs( f , c , x+dx[i] , y+dy[i] );
		return 1;
	}
	else return 0;
}

int main()
{
	int w,h;
	while( cin >> h >> w , w|h )
	{
		char f[110][110] = {0};
		int cnt = 0;
		for( int i=1;i<=h; ++i )for( int j=1; j<=w; ++j )cin >> f[i][j];
		for( int i=1;i<=h; ++i )for( int j=1; j<=w; ++j )
			if( f[i][j] )cnt+=dfs(f,f[i][j],j,i);
		cout << cnt << endl;
	}
}