比赛 板子大赛 评测结果 AAAAAAAAAAAAAAAAAAAA
题目名称 黑白图像 最终得分 100
用户昵称 zqy 运行时间 0.233 s
代码语言 C++ 内存使用 5.86 MiB
提交时间 2025-01-22 09:17:13
显示代码纯文本
#include <iostream>
#include <cstdio>
using namespace std;
const int N=705;
int mk[N][N],n,ans,fx[]={-1,-1,-1,0,1,1,1,0},fy[]={-1,0,1,1,1,0,-1,-1};
char s[N][N];
void dfs(int x,int y){
    mk[x][y]=1;
    for(int i=0;i<8;i++){
        int xx=x+fx[i],yy=y+fy[i];
        if(xx>n||xx<1||yy>n||yy<1||mk[xx][yy]||s[xx][yy]=='0')continue;
        dfs(xx,yy);
    }
    return;
}
int main(){
    freopen("common.in","r",stdin);
    freopen("common.out","w",stdout);
    scanf("%d",&n);
    for(int i=1;i<=n;i++){
        scanf("%s",s[i]+1);
    }
    for(int i=1;i<=n;i++){
        for(int j=1;j<=n;j++){
            if(s[i][j]=='1'&&!mk[i][j]){
                ans++;
                dfs(i,j);
            }
        }
    }
    printf("%d\n",ans);
    return 0;
}