记录编号 115075 评测结果 AAAAAAAAAA
题目名称 [UVa 572] 油田 最终得分 100
用户昵称 GravatarBokjan 是否通过 通过
代码语言 C++ 运行时间 0.004 s
提交时间 2014-08-13 18:47:06 内存使用 0.32 MiB
显示代码纯文本
#include <fstream>
const int maxn = 101;
int ans;
bool g[maxn][maxn];
namespace std
{
	ifstream fin("oild.in");
	ofstream fout("oild.out");
}
void Clear(int x, int y)
{
	for(int i = 0; i <= x + 1; i++)
		for(int j = 0; j <= y + 1; j++)
			g[i][j] = false;
	ans = 0;
}
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);  /*dfs(x, y);*/  dfs(x, y + 1);
	dfs(x + 1, y - 1);dfs(x + 1, y);dfs(x + 1, y + 1);
}
int main(void)
{
	int m, n;
	for(;;)
	{
		std::fin >> m >> n;
		if(!m && !n)
			break;
		Clear(n, m);
		for(int i = 1; i <= m; i++)
		{
			char row[maxn] = {0};
			std::fin >> row;
			for(int j = 0; j < n; j++)
				if('@' == row[j])
					g[i][j + 1] = true;
		}
		for(int i = 1; i <= m; i++)
			for(int j = 1; j <= n; j++)
				if(g[i][j])
				{
					ans++;
					dfs(i, j);
				}
		std::fout << ans << std::endl;
	}
	std::fin.close();
	std::fout.close();
	return 0;
}