记录编号 |
549379 |
评测结果 |
AAAAAAAAAAAAAAAAAAAA |
题目名称 |
[入门经典] 黑白图像 |
最终得分 |
100 |
用户昵称 |
锝镆氪锂铽 |
是否通过 |
通过 |
代码语言 |
C++ |
运行时间 |
0.337 s |
提交时间 |
2020-02-10 17:47:39 |
内存使用 |
3.67 MiB |
显示代码纯文本
#include<cstdio>
using namespace std;
const int maxN=701,fl[8][2]={{0,1},{0,-1},{1,0},{-1,0},{-1,-1},{1,1},{1,-1},{-1,1}};
void bfs(int x,int y);
bool p[maxN][maxN]={};
int a[maxN][maxN]={},que[maxN*maxN][2],n;
int com(){
freopen("common.in","r",stdin);
freopen("common.out","w",stdout);
int ans=0;
scanf("%d",&n);
for(int i=1;i<=n;i++){
for(int j=1;j<=n;j++)scanf("%1d",&a[i][j]);
}
for(int i=1;i<=n;i++){
for(int j=1;j<=n;j++){
if(a[i][j]&&!p[i][j]){
ans++;
bfs(i,j);
}
}
}
printf("%d",ans);
return 0;
}
int lol=com();
int main(void){;}
void bfs(int x,int y){
int front=0,back=2;
que[1][0]=x,que[1][1]=y;
while(front<back-1){
front++;
x=que[front][0];
y=que[front][1];
for(int i=0;i<8;i++){
int x1=x+fl[i][0];
int y1=y+fl[i][1];
if(x1<1||y1<1||x1>n||y1>n||!a[x1][y1]||p[x1][y1])continue;
p[x1][y1]=true;
que[back][0]=x1;
que[back++][1]=y1;
}
}
}