记录编号 298586 评测结果 AAAAAAAAAA
题目名称 [USACO Nov07] 最大的湖 最终得分 100
用户昵称 Gravatar初春饰利 是否通过 通过
代码语言 C++ 运行时间 0.025 s
提交时间 2016-08-22 10:33:59 内存使用 8.00 MiB
显示代码纯文本
#include <cstdio>
int n,m,k;
int a[101][101];
int vis[101][101];
struct pos{
	int x;
	int y;
	};
pos queue[1000000];
int head=0;
int tail=0;
int ans=0;
int xy[4][2]={{1,0},{0,1},{-1,0},{0,-1}};
void bfs(int y,int x){
	head=0;
	tail=1;
	int i;
	queue[1].x=x;
	queue[1].y=y;
	vis[y][x]=1;
	int nx;
	int ny;
	while(head != tail){
		head++;
		for(i=0;i<4;i++){
			nx=queue[head].x+xy[i][0];
			ny=queue[head].y+xy[i][1];
			if(vis[ny][nx] == 0 && a[ny][nx] == 1){
				vis[ny][nx]=1;
				tail++;
				queue[tail].x=nx;
				queue[tail].y=ny;
				if(ans<tail){
					ans=tail;
					}
				}      
			}
		}
	}
int main(){
	freopen("lake.in","r",stdin);
	freopen("lake.out","w",stdout);
	scanf("%d%d%d",&n,&m,&k);
	int i,j,l;
	for(l=1;l<=k;l++){
		scanf("%d%d",&i,&j);
		a[i][j]=1;
		}
	int num=0;
	for(i=1;i<=n;i++){
		for(j=1;j<=m;j++){
			if(a[i][j] == 1 && vis[i][j] == 0){
				bfs(i,j);
				if(num<ans){
					num=ans;
					}
				ans=0;
				}
			}
		}
	printf("%d",num);
	return 0;
	}