해결된 질문
작성
·
230
0
#include <bits/stdc++.h>
using namespace std;
const int max_n = 104;
int n, ret, a[max_n][max_n], e[max_n][max_n], h = 1;
bool visited[max_n][max_n];
int dx[4] = {-1, 0, 1, 0};
int dy[4] = {0, 1, 0, -1};
void dfs(int y, int x) {
visited[y][x] = 1;
for (int i=0; i<4; ++i) {
int ny = y + dy[i];
int nx = x + dx[i];
if (ny < 0 || ny >= n || nx < 0 || nx >= n) continue;
if (e[ny][nx] == 0 && !visited[ny][nx]) dfs(ny, nx);
}
}
int main() {
ios_base::sync_with_stdio(false); cin.tie(NULL); cout.tie(NULL);
cin >> n;
for (int i=0; i<n; ++i) {
for (int j=0; j<n; ++j) {
cin >> a[i][j];
}
}
while (h <= 100) {
fill(&visited[0][0], &visited[0][0] + max_n * max_n, 0);
int temp = 0;
for (int i=0; i<n; ++i) {
for (int j=0; j<n; ++j) {
if (e[i][j] == 1) continue;
if (a[i][j] <= h) e[i][j] = 1;
}
}
for (int i=0; i<n; ++i) {
for (int j=0; j<n; ++j) {
if (e[i][j] == 0 && !visited[i][j]) {
dfs(i, j);
++temp;
}
}
}
ret = max(ret, temp);
++h;
}
cout << ret << "\n";
return 0;
}
아 이거 틀린것도 물어보셨구나.. ㅎㅎ 저는 y, x만 물어보신 줄 알고 답변드렸는데 ㅎㅎ 담에 또 질문있으시면 질문주세요!