比赛 |
搜索题... |
评测结果 |
AAAAAAAAAA |
题目名称 |
最大的湖 |
最终得分 |
100 |
用户昵称 |
return 0; |
运行时间 |
0.500 s |
代码语言 |
C++ |
内存使用 |
0.32 MiB |
提交时间 |
2014-11-04 19:16:14 |
显示代码纯文本
#include<fstream>
#include<deque>
#include<cstring>
using namespace std;
ifstream fin("lake.in");
ofstream fout("lake.out");
int a[101][101];
bool c[101][101];
int n,m,b;
int counter=0,ans=0;
class woca
{
public:
int x;
int y;
int z;
};
deque<woca>q;
int BFS()
{
woca f;
woca k;
int sum=1;
while(q.size()!=0)
{
f=q.at(0);
q.pop_front();
if(a[f.x+1][f.y]==1&&c[f.x+1][f.y]==0)
{
k.x=f.x+1;
k.y=f.y;
k.z=f.z+1;
sum++;
c[f.x+1][f.y]=1;
q.push_back(k);
}
if(a[f.x-1][f.y]==1&&c[f.x-1][f.y]==0)
{
k.x=f.x-1;
k.y=f.y;
k.z=f.z+1;
c[f.x-1][f.y]=1;
sum++;
q.push_back(k);
}
if(a[f.x][f.y+1]==1&&c[f.x][f.y+1]==0)
{
k.x=f.x;
k.y=f.y+1;
k.z=f.z+1;
c[f.x][f.y+1]=1;
sum++;
q.push_back(k);
}
if(a[f.x][f.y-1]==1&&c[f.x][f.y-1]==0)
{
k.x=f.x;
k.y=f.y-1;
k.z=f.z+1;
c[f.x][f.y-1]=1;
sum++;
q.push_back(k);
}
}
return sum;
}
int main()
{
fin>>n>>m>>b;
int i,A,B,j;
woca flag;
for(i=1;i<=b;i++)
{
fin>>A>>B;
a[A][B]=1;
}
for(i=1;i<=n;i++)
for(j=1;j<=m;j++)
{
if(a[i][j]==1)
{
flag.x=i;
flag.y=j;
flag.z=1;
q.push_back(flag);
c[i][j]=1;
counter=BFS();
if(counter>ans)
ans=counter;
memset(c,0,sizeof(c));
}
}
fout<<ans<<endl;
}