比赛 |
20121016 |
评测结果 |
C |
题目名称 |
家族 |
最终得分 |
0 |
用户昵称 |
Cloud |
运行时间 |
0.000 s |
代码语言 |
C++ |
内存使用 |
0.00 MiB |
提交时间 |
2012-10-16 20:41:06 |
显示代码纯文本
#include<fstream>
#include<string>
#include<queue>
using namespace std;
struct yu
{
int x,y;
};
queue<yu> dq;
yu tmp;
int f[102][202];
char st[200];
int num[101];
int main(void)
{
ifstream fin("family.in");
ofstream fout("family.out");
int n;
fin>>n;
int i,j;
fin.getline(st,200);
for(i=1;i<=n;i++)
{
fin.getline(st,200);
num[i]=strlen(st);
for(j=1;j<num[i];j++)
if(st[j-1]=='*'||st[j-1]==' ')
f[i][j]=-1;
}
int sum=0;
for(i=1;i<=n;i++)
for(j=1;j<=num[i];j++)
{
if(!f[i][j])
{
tmp.x=i;
tmp.y=j;
dq.push(tmp);
f[i][j]=1;
sum++;
while(dq.size())
{
tmp=dq.front();
if(tmp.x-1&&!f[tmp.x-1][tmp.y])
{
tmp.x--;
f[tmp.x][tmp.y]=1;
dq.push(tmp);
}
tmp=dq.front();
if(tmp.y-1&&!f[tmp.x][tmp.y-1])
{
tmp.y--;
f[tmp.x][tmp.y]=1;
dq.push(tmp);
}
tmp=dq.front();
if(tmp.x+1<=n&&!f[tmp.x+1][tmp.y])
{
tmp.x++;
f[tmp.x][tmp.y]=1;
dq.push(tmp);
}
tmp=dq.front();
if(tmp.y+1<=num[i]&&!f[tmp.x][tmp.y+1])
{
tmp.y++;
f[tmp.x][tmp.y]=1;
dq.push(tmp);
}
dq.pop();
}
}
}
fout<<sum;
fin.close();
fout.close();
return 0;
}