Post List

[BOJ] 백준 4963 섬의 개수

[BOJ] 백준 4963 섬의 개수



이 문제 역시, 그래프를 전부 탐색하면 되는 문제 입니다.
DFS나 BFS로 탐색을 실시하면 되겠습니다.

소스 코드 : 

#include 
#include 
#include 
using namespace std;

// 8방위 세팅
struct {
 int x, y;
}move[8] = { {-1,0}, {-1,1}, {0,1}, {0,-1}, {1,0},{1,-1},{1,1},{-1,-1} };

vector cnt;
bool visited[52][52];
int v[52][52];
int check = 0;

// 갈수 있는 모든 길을 가본다.
void DFS(int x, int y) {
 visited[x][y] = true;
 for (int i = 0; i < 8; i++) {
  int cur_x = x + ::move[i].x;
  int cur_y = y + ::move[i].y;
  if (visited[cur_x][cur_y] == false && v[cur_x][cur_y] == 1) {
   DFS(cur_x, cur_y);
  }
 }
}


int main() {
 while (true) {
  int a, b;
  cin >> b >> a; cin.ignore();
  if (a == 0 && b == 0) break;
  for (int i = 1; i <= a; i++) {
   for (int j = 1; j <= b; j++) {
    scanf("%1d", &v[i][j]);
   }
  }
  for (int i = 1; i <= a; i++) {
   for (int j = 1; j <= b; j++) {
    if (v[i][j] == 1 && visited[i][j] == false) {
     // 한번 출발한 DFS가 풀릴 때 check++
                    check++;
     DFS(i, j);
    }
   }
  }
  cout <

댓글