比赛 |
搜索题... |
评测结果 |
AAAAAAAAAA |
题目名称 |
最大的湖 |
最终得分 |
100 |
用户昵称 |
St.Burning\ |
运行时间 |
0.008 s |
代码语言 |
C++ |
内存使用 |
0.33 MiB |
提交时间 |
2014-11-04 18:53:26 |
显示代码纯文本
#include<iostream>
#include<cstdio>
#include<cstdlib>
#include<algorithm>
#include<cstring>
#include<vector>
#include<queue>
#include<cmath>
#include<ctime>
using namespace std;
typedef long long INT64;
const int INF=0x7fffffff;
const int MAXN=102;
struct Node{int x,y;};
int dx[]={0,1,0,-1},dy[]={1,0,-1,0};
bool Map[MAXN][MAXN],flag[MAXN][MAXN];
int main()
{
freopen("lake.in","r",stdin);
freopen("lake.out","w",stdout);
memset(Map,0,sizeof(Map));
memset(flag,0,sizeof(flag));
int N,M,K,x,y;
scanf("%d%d%d",&N,&M,&K);
for(int i=1;i<=N;i++)
for(int j=1;j<=M;j++)Map[i][j]=0;
for(int i=1;i<=K;i++){
scanf("%d%d",&x,&y);
Map[x][y]=1;
}
int Res=0;
for(int i=1;i<=N;i++){
for(int j=1;j<=M;j++){
if(Map[i][j]&&!flag[i][j]){
queue<Node> Q;
Q.push((Node){i,j});
flag[i][j]=1;
int num=1;
while(!Q.empty()){
Node t=Q.front();Q.pop();
for(int k=0;k<4;k++){
if(Map[t.x+dx[k]][t.y+dy[k]] &&!flag[t.x+dx[k]][t.y+dy[k]]){
flag[t.x+dx[k]][t.y+dy[k]]=1;
num++;
Q.push((Node){t.x+dx[k],t.y+dy[k]});
}
}
}
if(num>Res)Res=num;
}
}
}
printf("%d",Res);
fclose(stdin);
fclose(stdout);
return 0;
}