记录编号 383409 评测结果 AAAAAAAAAAAAAAAAAAAA
题目名称 [入门经典] 黑白图像 最终得分 100
用户昵称 Gravatarxzcxzc11 是否通过 通过
代码语言 C++ 运行时间 0.158 s
提交时间 2017-03-15 20:53:59 内存使用 2.67 MiB
显示代码纯文本
#include <iostream>
#include <cstdio>
#include <iomanip>
#include <cstring>
#include <string>
//#define DEBUG

using namespace std;

const int maxn=702;
int n;
int map[maxn][maxn];
char str[maxn][maxn];
int cnt=0;

void dfs(int x,int y);

int main()
{
#ifndef DEBUG
	freopen("common.in","r",stdin);
	freopen("common.out","w",stdout);
	ios::sync_with_stdio(0);
#endif
	cin>>n;
	for (int i=1;i<=n;++i)
	{
		for (int j=1;j<=n;++j)
		{
			cin>>str[i][j];
			map[i][j]=str[i][j]-'0';
		}
	}
	
	for (int i=1;i<=n;++i)
	{
		for (int j=1;j<=n;++j)
		{
			if(map[i][j]==1)
			{
				dfs(i,j);
				++cnt;
			}
		}
	}
	cout<<cnt<<endl;
	return 0;
}

void dfs(int x,int y)
{
	int nx,ny;
	for (int i=-1;i<=1;++i)
	{
		for (int j=-1;j<=1;++j)
		{
			if(i!=0||j!=0)
			{
				nx=x+i;
				ny=y+j;
				if(nx>=1&&nx<=n&&ny>=1&&ny<=n)
				{
					if(map[nx][ny]==1)
					{
						map[nx][ny]=0;
						dfs(nx,ny);
					}
				}
			}
		}
	}
}