记录编号 549379 评测结果 AAAAAAAAAAAAAAAAAAAA
题目名称 [入门经典] 黑白图像 最终得分 100
用户昵称 Gravatar锝镆氪锂铽 是否通过 通过
代码语言 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;
		}
	}
}