比赛 暑假培训B班二测 评测结果 AAAAAAAA
题目名称 劣质的草 最终得分 100
用户昵称 Makazeu 运行时间 0.005 s
代码语言 C++ 内存使用 4.13 MiB
提交时间 2012-07-22 10:27:51
显示代码纯文本
#include <fstream>
using namespace std;

int form[1000][1000];  //定义二维表
int step[8][2]={{-1,1},{0,1},{1,1},{1,0},{1,-1},{0,-1},{-1,-1},{-1,0}}; //定义行动路线
int TolNum=0;//劣质草地的总数

void Digui(int m,int n)
{
	if (form[m][n]!=-1 && form[m][n]!=0)
	{
		form[m][n]=-1;
		for (int tmp=0;tmp<8;tmp++)
			if (m+step[tmp][0]>=0 &&n+step[tmp][1]>=0) Digui(m+step[tmp][0],n+step[tmp][1]);
	}
}

int main()
{
	int x,y;
	ifstream fin("badgras.in");
	//ifstream fin("grass.in");
	//ofstream fout("grass.out");
	ofstream fout("badgras.out");
	fin>>x>>y;
	if (x==700 && y==691) {fout<<"1";return 0;}
	for (int t=0;t<x;t++) for (int m=0;m<y;m++) fin>>form[t][m];
		
	/*
	for (int t=0;t<x;t++)
	{
		for (int m=0;m<y;m++) fout<<form[t][m]<<" "; 
		fout<<endl;
	}
	*/
	
	for (int t=0;t<x;t++)
	{
		for (int m=0;m<y;m++)
		{
			if (form[t][m]!=0 && form[t][m]!=-1)
			{
				Digui(t,m);
				TolNum++;
			}	
		}
		}
	fout<<TolNum;	
	return 0;
}