比赛 |
20121016 |
评测结果 |
AWWWAWWWWA |
题目名称 |
家族 |
最终得分 |
30 |
用户昵称 |
Truth.Cirno |
运行时间 |
0.075 s |
代码语言 |
C++ |
内存使用 |
3.16 MiB |
提交时间 |
2012-10-16 20:15:34 |
显示代码纯文本
#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;
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<map[x].length())
{
if (map[x][y]!='*'&&map[x][y]!=' '&&map[x][y]!='\0')
{
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",&n);
for (i=1;i<=n;i++)
{
getline(cin,map[i]);
map[i]="*"+map[i];
}
for (i=1;i<=n;i++)
{
for (j=1;j<map[i].length();j++)
if (map[i][j]!='*'&&map[i][j]!=' '&&map[i][j]!='\0')
bfs(i,j);
}
cout<<total<<endl;
return(0);
}