记录编号 44158 评测结果 AAAAAAAAAA
题目名称 家族 最终得分 100
用户昵称 GravatarTruth.Cirno 是否通过 通过
代码语言 C++ 运行时间 0.062 s
提交时间 2012-10-17 07:36:31 内存使用 3.15 MiB
显示代码纯文本
#include <iostream>
#include <cstdio>
#include <cstring>
using namespace std;

const short RUL[4][2]={{0,1},{0,-1},{1,0},{-1,0}};

int n,total,len[300];
string map[300];

void bfs(int x,int y)
{
    int i,tail=0,head=0,que[200000][2]={0};
    total++;
    map[x][y]='*';
    que[0][0]=x;
    que[0][1]=y;
    while (head>=tail)
    {
        for (i=0;i<4;i++)
        {
            x=RUL[i][0]+que[tail][0];
            y=RUL[i][1]+que[tail][1];
            if (x>=1&&x<=n&&y>=1&&y<len[x])
            {
                if (map[x][y]>='a'&&map[x][y]<='z')
                {
                    map[x][y]='*';
                    head++;
                    que[head][0]=x;
                    que[head][1]=y;
                }
            }
        }
        tail++;
    }
    
}

int main(void)
{
    freopen("family.in","r",stdin);
    freopen("family.out","w",stdout);
    int i,j;
    scanf("%d",&n);
	getline(cin,map[0]);
    for (i=1;i<=n;i++)
    {
        getline(cin,map[i]);
        map[i]="*"+map[i];
		len[i]=map[i].length();
    }
    for (i=1;i<=n;i++)
    {
        for (j=1;j<len[i];j++)
            if (map[i][j]>='a'&&map[i][j]<='z')
                bfs(i,j);
    }
    cout<<total<<endl;
    return(0);
}