题目:点击打开链接;
#include<stdio.h>
#include<string.h>
#include<algorithm>
using namespace std;
int man,m,n,t,is_shu,e;
int go[8][2]= {{0,1},{0,-1},{1,0},{-1,0},{1,1},{-1,-1},{-1,1},{1,-1}};
int map[509][509];
int sum;
void gg(int x,int y)
{
int k=0;
sum++;
for(k=0; k<8; k++)
{
int x1=x+go[k][0],y1=y+go[k][1];
if(x1>0&&x1<n&&y1>0&&y1<m&&map[x1][y1]==1)
{
map[x1][y1]=0;
gg(x1,y1);
}
}
}
int main()
{
while(~scanf("%d%d%d",&n,&m,&e))
{
is_shu=0;
getchar();
int i,j;
char h;
for(i=0; i<n; i++)
{
for(j=0; j<m;)
{
scanf("%c",&h);
if(h=='0'||h=='1')
map[i][j]=h-'0',j++;
}
getchar();
}
man=0;
for(i=0; i<n; i++)
for(j=0; j<m; j++)
{
if(map[i][j]==1)
{
is_shu++;
sum=0;
map[i][j]=0;
gg(i,j);
if(man<sum)
man=sum;
}
}
printf("%d %d\n",is_shu,man*e);
}
return 0;
}