본문 바로가기
백준 알고리즘/BFS

백준 2468번 C++

by paysmile 2019. 1. 9.

#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