比赛 20120810 评测结果 AAAAAAAAAA
题目名称 最大的湖 最终得分 100
用户昵称 Makazeu 运行时间 0.006 s
代码语言 C++ 内存使用 0.35 MiB
提交时间 2012-08-10 10:12:51
显示代码纯文本
#include <fstream>
using namespace std;
 
int form[101][101];  //定义二维表
int step[4][2]={{1,0},{-1,0},{0,1},{0,-1}};//递归的方向
int MaxNum=0;//最大的湖的
int N,M,K;
int TempK=0;
int q,p;
ifstream fin("lake.in");
ofstream fout("lake.out");
 
void print()
{
    int m,t;   
    for (t=1;t<=N;t++)
    {
        for(m=1;m<=M;m++)
        {
            fout<<form[t][m]<<" ";
        }
        fout<<endl;
    }
    fout<<endl;
}
 
void Digui(int m,int n)
{
    if (form[m][n]==1)
    {
        TempK++;
        form[m][n]=0;
        for (int tmp=0;tmp<4;tmp++)
        {
            q=m+step[tmp][0];
            p=n+step[tmp][1];
            if (q>=1 &&p>=1 && q<=N && p<=M && form[q][p]==1)
                Digui(q,p);
        }
    }
}
 
int main()
{
    fin>>N>>M>>K;
    int x,y;
    for (int i=0;i<K;i++)
    {
        fin>>x>>y;
        form[x][y]=1;
    }
     
    int m,t;
     
 
    //print();
    for (t=1;t<=N;t++)
    {
        for (m=1;m<=M;m++)
        {
            if (form[t][m]==1)
            {
                TempK=0;
                Digui(t,m);
                //print();
                //fout<<TempK<<endl;
                if(TempK>MaxNum) MaxNum=TempK;
            }  
        }
    }
    fout<<MaxNum;
    return 0;
}