比赛 搜索题... 评测结果 AAAAAAAAAA
题目名称 最大的湖 最终得分 100
用户昵称 OIdiot 运行时间 0.011 s
代码语言 C++ 内存使用 0.33 MiB
提交时间 2014-11-04 19:17:16
显示代码纯文本
#include <iostream>
#include <cstring>
#include <ctime>
#include <algorithm>
#include <cstdio>
#define MAXN 105
#define INF (1<<28)
#define SpeedUp ios::sync_with_stdio(false)
#define Judge
//#define Debug
using namespace std;
typedef long long LL;

const int X[]={0,1,0,-1};
const int Y[]={1,0,-1,0};

bool G[MAXN][MAXN];
int Ans[MAXN*MAXN];
int N,M,K,cnt;

void init()
{
	int x,y;
	#ifdef Judge
	SpeedUp;
	freopen("lake.in","r",stdin);
	freopen("lake.out","w",stdout);
	#endif
	cin>>N>>M>>K;
	cnt=0;
	memset(G,false,sizeof(G));
	for(int i=1;i<=K;i++){
		cin>>x>>y;
		G[x][y]=true;
	}
}

void FloodFill(int x,int y){
	#ifdef Debug
	cout<<"BFS on X="<<x<<"\tY="<<y<<endl;
	#endif
	G[x][y]=false;
	Ans[cnt]++;
	for(int i=0;i<4;i++){
		int tx=x+X[i],ty=y+Y[i];
		if(tx && ty && tx<=N && ty<=M){
			if(G[tx][ty])
				FloodFill(tx,ty);
		}
	}
}

void work(){
	for(int i=1;i<=N;i++)
		for(int j=1;j<=M;j++){
			if(G[i][j]){
				Ans[++cnt]=0;
				#ifdef Debug
				cout<<"cnt="<<cnt<<endl;
				#endif
				FloodFill(i,j);
			}
		}
	int t=-1;
	for(int i=1;i<=cnt;i++){
		//t=max(t,Ans[cnt]); 不能再逗比 
		t=max(t,Ans[i]);
	}
	cout<<t<<endl;
}

int main()
{
	init();
	work();
	#ifdef Debug
	cout<<"Time Used: "<<(double)clock()/CLOCKS_PER_SEC<<" s."<<endl;
	cout<<"Memory Used: "<<(double)(sizeof(G)+sizeof(Ans))/(1048576)<<" MB."<<endl;
	#endif
	return 0;
}