比赛 |
20121016 |
评测结果 |
WWAWWWWWWW |
题目名称 |
家族 |
最终得分 |
10 |
用户昵称 |
QhelDIV |
运行时间 |
0.006 s |
代码语言 |
C++ |
内存使用 |
3.44 MiB |
提交时间 |
2012-10-16 20:51:50 |
显示代码纯文本
#include <fstream>
using namespace std;
ifstream fin("family.in");
ofstream fout("family.out");
string S[401];
int N,Index;
bool flag[400][400];
const int Rx[5]={0,0,1,0,-1},Ry[5]={0,-1,0,1,0};
class QUEUE
{
public:
int X[400],Y[400],head,tail;
void Init(int Px,int Py)
{
head=1;tail=2;
X[head]=Px;Y[head]=Py;
}
}Q;
void Initialize()
{
int i;char Ch;
fin>>N;
Ch=fin.get();
for(i=1;i<=N;i++)
{
Ch=fin.get();
while(Ch!='\r' && Ch!='\n' && !fin.eof())
{
S[i].push_back(Ch);
Ch=fin.get();
}
}
}
void BFS(int Py,int Px)
{
int j;
Q.Init(Px,Py);
for(;Q.head<Q.tail;)
{
for(j=1;j<=4;j++)
{
int Tx=Q.X[Q.head]+Rx[j],Ty=Q.Y[Q.head]+Ry[j];
if(flag[Ty][Tx])
{
flag[Ty][Tx]=false;
Q.X[Q.tail]=Tx;
Q.Y[Q.tail]=Ty;
Q.tail++;
}
}
Q.head++;
}
}
int main()
{
Initialize();
for(int i=1;i<=N;i++)
{
int L=S[i].length();
for(int j=0;j<L;j++)
if(S[i][j]!='*' && S[i][j]!=' ')
flag[i][j]=true;
}
for(int i=1;i<=N;i++)
{
int L=S[i].length();
for(int j=0;j<L;j++)
if(flag[i][j])
{
Index++;
flag[i][j]=false;
BFS(i,j);
}
}
fout<<Index<<endl;
fin.close();
fout.close();
return 0;
}