khc1297   6년 전

#include <iostream>
using namespace std;

int N, cnt = 1, ans = 0;
int map[101][101];
int dx[] = { -1,1,0,0 };
int dy[] = { 0,0,-1,1 };
bool test[101][101];

int max(int a, int b) { return a > b ? a : b; }
void rain(int depth)
{
for (int i = 0; i < N; i++)
for (int j = 0; j < N; j++)
if (map[i][j] > depth)
test[i][j] = 1;
}

void init()
{
for (int i = 0; i < N; i++)
for (int j = 0; j < N; j++)
test[i][j] = false;

}

void dfs(int i, int j)
{
test[i][j] = false;
for (int k = 0; k < 4; k++)
{
int nx = i + dx[k];
int ny = j + dy[k];
if (nx <0 || ny <0 || nx>N - 1 || ny > N - 1)continue;
if (test[nx][ny])
dfs(nx, ny);
}
}

int main()
{
cin >> N;

for (int i = 0; i < N; i++)
for (int j = 0; j < N; j++)
cin >> map[i][j];
int final = 0;
while (cnt++ < 100)
{
rain(cnt);

for (int i = 0; i < N; i++)
for (int j = 0; j < N; j++)
if (test[i][j])
{
ans++;
dfs(i, j);
}

final = max(final, ans);
init();
ans = 0;
}
cout << final;
return 0;

}


잘짠거 같은데 40%쯤에서 틀렸다하는데 뭐가 틀렸는지 모르겠습니다


한수 부탁드립니다.

jh05013   6년 전

문제 번호를 넣어주세요. "안전 영역" 문제인 거 같은데 맞았다고 되어 있는데요?

khc1297   6년 전

안전영역문제인데 bfs로 풀어서 맞췃는데 혹시 dfs로 풀었더니 틀려서 어디서 틀린지를 몰라서요 ㅠㅠ

댓글을 작성하려면 로그인해야 합니다.