记录编号 44509 评测结果 AAAAAAAAAA
题目名称 家族 最终得分 100
用户昵称 GravatarCloud 是否通过 通过
代码语言 C++ 运行时间 0.010 s
提交时间 2012-10-18 21:59:45 内存使用 3.45 MiB
显示代码纯文本
#include<fstream>
#include<cstring>
#include<queue>
using namespace std;
struct yu
{
    int x,y;
};
queue<yu> dq;
int num[301];
/*bool*/short f[302][302];
yu tmp;
int main(void)
{
    ifstream fin("family.in");
    ofstream fout("family.out");
    int n;
    string ch[202];
    fin>>n;
    getline(fin,ch[0]);
    int i,j;
    for(i=1;i<=n;i++)
    {
        getline(fin,ch[i]);
        num[i]=ch[i].size();
        for(j=0;j<num[i];j++)
            if(ch[i][j]>='a'&&ch[i][j]<='z')
                f[i][j+1]=1;
    }
    int m=0;
    for(i=1;i<=n;i++)
        for(j=1;j<=num[i];j++)
        {
            if(f[i][j])
            {
                f[i][j]=0;
                tmp.x=i;
                tmp.y=j;
                m++;
                dq.push(tmp);
                while(dq.size())
                {
                    tmp=dq.front();
                    if(tmp.x-1>0&&f[tmp.x-1][tmp.y])
                    {
                        tmp.x--;
                        f[tmp.x][tmp.y]=0;
                        dq.push(tmp);
                    }
                    tmp=dq.front();
                    if(tmp.x+1<=n&&f[tmp.x+1][tmp.y])
                    {
                        tmp.x++;
                        f[tmp.x][tmp.y]=0;
                        dq.push(tmp);
                    }
                    tmp=dq.front();
                    if(tmp.y-1>0&&f[tmp.x][tmp.y-1])
                    {
                        tmp.y--;
                        f[tmp.x][tmp.y]=0;
                        dq.push(tmp);
                    }
                    tmp=dq.front();
                    if(tmp.y+1<=num[tmp.x]&&f[tmp.x][tmp.y+1])
                    {
                        tmp.y++;
                        f[tmp.x][tmp.y]=0;
                        dq.push(tmp);
                    }
                    dq.pop();
                }   
            }
        }
    fout<<m;
    fin.close();
    fout.close();
    return 0;
}