比赛 暑假培训B班二测 评测结果 AAAAAAEA
题目名称 劣质的草 最终得分 87
用户昵称 Satoshi 运行时间 0.094 s
代码语言 C++ 内存使用 0.35 MiB
提交时间 2012-07-22 11:29:32
显示代码纯文本
#include <fstream>
using namespace std;
ifstream in("badgras.in");
ofstream out("badgras.out");
int a[101][101],m,n,newcolor=1,oldcolor=0;
int mark(int x,int y,int newcolor,int oldcolor)
{
	if(a[x][y]==oldcolor)
	{
		a[x][y]=newcolor;
	if(x-1>0)mark(x-1,y,newcolor,oldcolor);
	if(y-1>0)mark(x,y-1,newcolor,oldcolor);
	if(x+1<m)mark(x+1,y,newcolor,oldcolor);
	if(y+1<n)mark(x,y+1,newcolor,oldcolor);
	if(x+1<=m&&y+1<=n)mark(x+1,y+1,newcolor,oldcolor);
	if(x-1>0&&y-1>0)mark(x-1,y-1,newcolor,oldcolor);
	if(x+1<=m&&y-1>0)mark(x+1,y-1,newcolor,oldcolor);
	if(x-1>0&&y+1<=n)mark(x-1,y+1,newcolor,oldcolor);
	}
	return 0;
}
int main()
{
	int j,i;
	
	in>>m>>n;
	for(i=1;i<=m;i++)
	{
		for(j=1;j<=n;j++)
		{
			in>>a[i][j];
			if(a[i][j]>=1)a[i][j]=1;
		}
	}
    for(i=1;i<=n;i++)
	{
		for(j=1;j<=n;j++)
		{
			if(a[i][j]==1){
			newcolor++;
			mark(i,j,newcolor,a[i][j]);}
		}
	}
	out<<newcolor-1;
	in.close();
	out.close();
	return 0;
}