#include <iostream>
#include <cstring>
using namespace std;
int area[100][100];
int area2[100][100];
int n;
int visited[100][100];
typedef struct {
int x, y;
}Move;
Move m[4] = { {1,0},{-1,0},{0,1},{0,-1} };
void arrcompute(int k) {
for (int i = 0; i < n; i++) {
for (int j = 0; j < n; j++) {
if (area[i][j] <= k)
area2[i][j] = 0;
else
area2[i][j] = 1;
}
}
}
void dfs(int i, int j) {
visited[i][j] = 1;
for (int k = 0; k < 4; k++) {
int ma = i + m[k].x;
int mb = j + m[k].y;
if (ma >= 0 && ma < n && mb >= 0 && mb < n) {
if (visited[ma][mb] == 0 && area2[ma][mb] == 1)
dfs(ma, mb);
}
}
}
int main(void) {
cin >> n;
int maxarea = 1;
for (int i = 0; i < n; i++) {
for (int j = 0; j < n; j++) {
cin >> area[i][j];
}
}
for (int k = 1; k <= 100; k++) {
memset(visited, 0, sizeof(visited));
arrcompute(k);
int count = 0;
for (int i = 0; i < n; i++) {
for (int j = 0; j < n; j++) {
if (area2[i][j] == 1 && visited[i][j] == 0) {
dfs(i, j);
count += 1;
}
}
}
if (count > maxarea)
maxarea = count;
}
cout << maxarea;
}
'백준 알고리즘 > BFS' 카테고리의 다른 글
백준 2644번 C++ (0) | 2019.01.12 |
---|---|
백준 14502번 C++ (0) | 2019.01.10 |
백준 11724번 C++ (0) | 2019.01.09 |
백준 2583번 C++ (0) | 2019.01.08 |
백준 11403번 C++ (0) | 2019.01.07 |