记录编号 |
568921 |
评测结果 |
AAAAAAAAAAAAAAAAAAAA |
题目名称 |
[入门经典] 黑白图像 |
最终得分 |
100 |
用户昵称 |
lihaoze |
是否通过 |
通过 |
代码语言 |
C++ |
运行时间 |
0.122 s |
提交时间 |
2022-02-10 16:23:03 |
内存使用 |
2.23 MiB |
显示代码纯文本
#include <iostream>
#include <vector>
#include <cstring>
#include <string>
#include <algorithm>
#define OPEN(_x) freopen(#_x".in", "r", stdin); freopen(#_x".out", "w", stdout)
#define ABS(_x) ((_x)<0?(-(_x)):(_x))
#define fi first
#define se second
using namespace std;
typedef long long ll;
typedef pair<int, int> PII;
const int N = 1010;
int n, cnt = 0;
int dx[] = {0, 1, 1, 1, 0, -1, -1, -1}, dy[] = {1, 1, 0, -1, -1, -1, 0, 1};
bool g[N][N];
inline bool is_valid(int x, int y) { return (x > 0 && y > 0 && x <= n && y<=n); }
void dfs(int x, int y) {
if(!is_valid(x, y) || !g[x][y]) return;
g[x][y] = 0;
for(register int i = 0; i<8; ++i)
dfs(x+dx[i], y+dy[i]);
}
int main() {
ios::sync_with_stdio(false), cin.tie(0);
#ifdef DEBUG
OPEN(test);
#endif
OPEN(common);
cin >> n;
for(register int i = 1; i<=n; ++i) {
for(register int j = 1; j<=n; ++j) {
char tmp; cin >> tmp;
g[i][j] = (tmp == '1');
}
}
for(register int i = 1; i<=n; ++i)
for(register int j = 1; j<=n; ++j)
if(g[i][j]) dfs(i, j), cnt++;
cout << cnt << '\n';
return 0;
}