Satellite Photographs

来源:互联网 发布:手机便签软件 编辑:程序博客网 时间:2024/04/28 07:03

Description

Farmer John purchased satellite photos of W x H pixels of hisfarm (1 <= W <= 80, 1<= H <= 1000) and wishes to determinethe largest 'contiguous' (connected) pasture. Pastures arecontiguous when any pair of pixels in a pasture can be connected bytraversing adjacent vertical or horizontal pixels that are part ofthe pasture. (It is easy to create pastures with very strangeshapes, even circles that surround other circles.)
Each photo has been digitally enhanced to show pasture area as anasterisk ('*') and non-pasture area as a period ('.'). Here is a 10x 5 sample satellite photo:
..*.....**
.**..*****
.*...*....
..****.***
..****.***

This photo shows three contiguous pastures of 4, 16, and 6 pixels.Help FJ find the largest contiguous pasture in each of hissatellite photos.

Input

* Line 1: Two space-separated integers: W and H
* Lines 2..H+1: Each line contains W"*" or"." characters representing oneraster line of a satellite photograph.

Output

* Line 1: The size of the largest contiguous field in thesatellite photo.

Sample Input

10 5..*.....**.**..*****.*...*......****.***..****.***

Sample Output

16

#include<iostream>
using namespace std;
char a[1500][1500];
int num;
void f(int x,int y)
{
   
if(a[x][y]=='*')
{
    a[x][y]='.';
    num++;
   f(x,y+1);
   f(x,y-1);
   f(x+1,y);
   f(x-1,y);
}
}
int main()
{
   int m,n,i,j,max=0;
  cin>>m>>n;
  for(i=1;i<=n;i++)
      for(j=1;j<=m;j++)
          cin>>a[i][j];

    for(i=1;i<=n;i++) 
        { 
            for(j=1;j<=m;j++) 
          { 
                num=0; 
                f(i,j); 
                 if(num>max) 
                     max=num; 
            } 
       } 

   cout<<max<<endl;

}

0 0