记录编号 |
284755 |
评测结果 |
AAAAAAAAAAAAAAAAAAAA |
题目名称 |
[入门经典] 黑白图像 |
最终得分 |
100 |
用户昵称 |
@@@ |
是否通过 |
通过 |
代码语言 |
C++ |
运行时间 |
0.306 s |
提交时间 |
2016-07-19 20:07:43 |
内存使用 |
2.52 MiB |
显示代码纯文本
#include <fstream>
#include <queue>
using namespace std;
ifstream cin("common.in");
ofstream cout("common.out");
bool e[701][701];
int n,newcolor=0,book[701][701],t[9][3]={{0,0,0},{0,-1,0},{0,-1,1},{0,0,1},{0,1,1},{0,1,0},{0,1,-1},{0,0,-1},{0,-1,-1}};
struct point
{
int x,y;
point(int _x,int _y)
{
this->x=_x;
this->y=_y;
}
};
queue<point> q;
int bfs(int start_x,int start_y)
{
newcolor++;
point a(start_x,start_y);
q.push(a);
book[a.x][a.y]=newcolor;
while(!q.empty())
{
point h=q.front();
q.pop();
for(int k=1;k<=8;k++)
{
point r(h.x+t[k][1],h.y+t[k][2]);
if(r.x>=1&&r.x<=n&&r.y>=1&&r.y<=n)
if(book[r.x][r.y]==0)
if(e[r.x][r.y])
q.push(r),book[r.x][r.y]=newcolor;
}
}
return 0;
}
int main()
{
int i,j;
char c;
cin>>n;
for(i=1;i<=n;i++)
for(j=1;j<=n;j++)
cin>>c,e[i][j]=c-'0';
for(i=1;i<=n;i++)
for(j=1;j<=n;j++)
if(e[i][j]&&book[i][j]==0)
bfs(i,j);
cout<<newcolor<<endl;
cin.close();
cout.close();
return 0;
}