记录编号 |
44509 |
评测结果 |
AAAAAAAAAA |
题目名称 |
家族 |
最终得分 |
100 |
用户昵称 |
Cloud |
是否通过 |
通过 |
代码语言 |
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;
}