记录编号 290023 评测结果 AAAAAAAAAA
题目名称 [USACO Nov07] 最大的湖 最终得分 100
用户昵称 Gravatar@@@ 是否通过 通过
代码语言 C++ 运行时间 0.002 s
提交时间 2016-08-05 18:53:57 内存使用 0.36 MiB
显示代码纯文本
#include <fstream>
#include <queue>
// #ifndef max(aa,bb)
// #define max(aa,bb) aa < bb ? aa : bb
// #endif
using namespace  std;
ifstream cin("lake.in");
ofstream cout("lake.out");
int n,m,kk;
bool e[101][101];
int book[101][101],newcolor;
int ans;
int t[5][3]={{0,0,0},{0,-1,0},{0,0,1},{0,1,0},{0,0,-1}};
class lake
{
	int _x;
	int _y;
public:
	
	int x()
	{
		return _x;
	}
	int y()
	{
		return _y;
	}
	void set_x(int _x_)
	{
		_x=_x_;
	}
	void set_y(int _y_)
	{
		_y=_y_;
	}
};

queue<lake> q;

int bfs(int start_x,int start_y)
{
	int s=0;
	newcolor ++;
	lake a;
	a.set_x(start_x);
	a.set_y(start_y);
	q.push(a);
	book[start_x][start_y] = newcolor;
	s++;
	while(!q.empty())
	{
		lake h = q.front();
		q.pop();
		for (int k = 1; k <= 4; ++k)
		{
			lake r;
			r.set_x(h.x()+t[k][1]);
			r.set_y(h.y()+t[k][2]);
			if (r.x()>=1&&r.y()>=1&&r.x()<=n&&r.y()<=m)
			{
				if (e[r.x()][r.y()] == 1)
				{
					if (book[r.x()][r.y()] == 0)
					{
						book[r.x()][r.y()] = newcolor;
						q.push(r);
						s++;
						/* code */
					}
					/* code */
				}
				/* code */
			}
			/* code */
		}
	}
	return s;
}
int cyf()
{
	int t1,t2;
	cin>>n>>m>>kk;
	for (int i = 1; i <= kk; ++i)
	{
		cin>>t1>>t2;
		e[t1][t2] = 1;
		/* code */
	}
	for (int i = 1; i <= n; ++i)
	{
		for (int j = 1; j <= m; ++j)
		{
			if (e[i][j] == 1 && book[i][j] == 0)
			{
				ans=max(ans,bfs(i,j));
				/* code */
			}
			/* code */
		}
		/* code */
	}
	cout<<ans<<endl;
	// printf("%n\n", &newcolor );
	cin.close();
	cout.close();
	return 0;
}
int CYF=cyf();
int main(int argc, char const *argv[])
{
	/* code */
	return 0;
}