比赛 搜索题... 评测结果 AAAAAAAAAA
题目名称 最大的湖 最终得分 100
用户昵称 Bokjan 运行时间 0.022 s
代码语言 C++ 内存使用 0.32 MiB
提交时间 2014-11-04 20:06:01
显示代码纯文本
#include <fstream>
const int maxn = 100 + 2;
bool g[maxn][maxn] = {0};
int counts[maxn * maxn] = {0};
namespace std
{
	ifstream fin("lake.in");
	ofstream fout("lake.out");
}
int dfs(int x, int y)
{
	if(!g[x][y])
		return 0;
	g[x][y] = false;
	int res = 1;
	res +=               dfs(x - 1, y);
	res += dfs(x, y - 1)       +	    dfs(x, y + 1);
	res +=               dfs(x + 1, y);
	return res;
}
int main(void)
{
	int n, m, k, countsPtr = 0;
	std::fin >> n >> m >> k;
	while(k--)
	{
		int x, y;
		std::fin >> x >> y;
		g[x][y] = true;
	}
	for(int i = 1; i <= n; i++)
		for(int j = 1; j <= m; j++)
			if(g[i][j])
				counts[countsPtr++] = dfs(i, j);
	int max = -1;
	for(int i = 0; i < countsPtr; i++)
		if(counts[i] > max)
			max = counts[i];
	std::fout << max << std::endl;
	std::fin.close();
	std::fout.close();
	return 0;
}