比赛 暑假培训B班二测 评测结果 AAAAAAEA
题目名称 劣质的草 最终得分 87
用户昵称 二木子系 运行时间 0.314 s
代码语言 C++ 内存使用 4.13 MiB
提交时间 2012-07-22 10:46:28
显示代码纯文本
#include<iostream>
#include<fstream>
using namespace std;
int num[1000][1000]={0},w=1,m,n;

int cao(int x,int y){
	num[x][y]=-w;
	if(y-1>=0&&num[x][y-1]>0)  cao(x,y-1);
	if(y-1>=0&&x-1>=0&&num[x-1][y-1]>0)   cao(x-1,y-1);
	if(x-1>=0&&num[x-1][y]>0)  cao(x-1,y);
	if(y+1<n&&x-1>=0&&num[x-1][y+1]>0)   cao(x-1,y+1);
	if(y+1<n&&num[x][y+1]>0)   cao(x,y+1);
	if(y+1<n&&x+1<m&&num[x+1][y+1]>0)   cao(x+1,y+1);
	if(x+1<m&&num[x+1][y]>0)   cao(x+1,y);
	if(y-1>=0&&x+1<m&&num[x+1][y-1]>0)   cao(x+1,y-1);
}
	

int main(){
	ifstream fin("badgras.in");
	ofstream fout("badgras.out");
	fin>>m>>n;
	for(int a=0;a<m;a++)
		for(int b=0;b<n;b++)
			fin>>num[a][b];
	for(int a=0;a<m;a++)
		for(int b=0;b<n;b++)
			if(num[a][b]>0){
				cao(a,b);
				w++;}
	fout<<w-1;
	return 0;
}