记录编号 114266 评测结果 AAAAAAAAAAAAAAAAAAAA
题目名称 [入门经典] 黑白图像 最终得分 100
用户昵称 GravatarBokjan 是否通过 通过
代码语言 C++ 运行时间 0.101 s
提交时间 2014-07-28 13:15:02 内存使用 0.78 MiB
显示代码纯文本
#include <fstream>
#include <cstring>
const int BOUND = 700 + 2;
bool g[BOUND][BOUND];
void dfs(int x, int y)
{
	if(!g[x][y])
		return;
	g[x][y] = false;
	dfs(x - 1, y - 1); dfs(x - 1, y); dfs(x - 1, y + 1);
	dfs(x, y - 1);		/*THIS*/	  dfs(x, y + 1);
	dfs(x + 1, y - 1); dfs(x + 1, y); dfs(x + 1, y + 1);
}
int main(void)
{
	std::ifstream fin("common.in");
	std::ofstream fout("common.out");
	int n, ans = 0;
	fin>>n;
	memset(g, 0, sizeof(g));
	for(int i = 1; i <= n; i++)
	{
		char row[BOUND];
		fin>>row;
		for(int j = 1; j <= n; j++)
			if('1' == row[j - 1])
				g[i][j] = true;
	}
	for(int i = 1; i <= n; i++)
		for(int j = 1; j <= n; j++)
			if(g[i][j])
			{
				ans++;
				dfs(i, j);
			}
	fout<<ans<<std::endl;
	fin.close();
	fout.close();
	return 0;
}