您的位置:首页 > 其它

poj 3620

2016-05-23 13:20 225 查看
题意:给出一个矩阵,其中有些格子干燥、有些潮湿。

如果一个潮湿的格子的相邻的四个方向有格子也是潮湿的,那么它们就可以构成更大

的湖泊,求最大的湖泊。

也就是求出最大的连在一块儿的潮湿的格子的数目。

#include<iostream>
#include<cstring>
using namespace std;
int aa[105][105]={0};
int dir[4][2]={-1,0,1,0,0,-1,0,1};
int sum=0,ans=0,n,m,k;
void dfs(int a,int b)
{
int a1,b1;
ans++;
aa[a][b]=0;
for(int i=0;i<4;i++)
{
a1=a+dir[i][0];
b1=b+dir[i][1];
if(a1>=1&&a1<=n&&b1>=1&&b1<=m&&aa[a1][b1])
dfs(a1,b1);
//不用回溯的原因,因为只要是能连续到达的店连成湖的肯定都能连一块的;

}
}
int main()
{
cin>>n>>m>>k;
for(int i=0;i<k;i++)
{int x,y;
cin>>x>>y;

aa[x][y]=1;

}
for(int i=1;i<=n;i++)
for(int j=1;j<=m;j++)
{   if(aa[i][j])
{   ans=0;
dfs(i,j);
if(ans>sum)sum=ans;
}
}
cout<<sum<<endl;

return 0;
}
内容来自用户分享和网络整理,不保证内容的准确性,如有侵权内容,可联系管理员处理 点击这里给我发消息
标签: