import java.util.Scanner;
public class Main {
static int w, h;
static int[][] a;
static boolean[][] visit;
static int[][] dir = {{1, 0}, {0, 1}, {-1, 0}, {0, -1}, {1, 1}, {1, -1}, {-1, 1}, {-1, -1}};
static int count;
static void DFS(int x, int y) {
visit[x][y] = true;
for (int i = 0; i < 8; i++) {
int nx = x + dir[i][0];
int ny = y + dir[i][1];
if (nx < 0 || ny < 0 || nx >= h || ny >= w) continue;
if (visit[nx][ny]) continue;
if (a[nx][ny] == 0) continue;
DFS(nx, ny);
}
}
public static void main(String[] args) {
Scanner kb = new Scanner(System.in);
while (true) {
w = kb.nextInt();
h = kb.nextInt();
if (w == 0 && h == 0) break;
a = new int[h][w];
for (int i = 0; i < h; i++) {
for (int j = 0; j < w; j++) {
a[i][j] = kb.nextInt();
}
}
visit = new boolean[h][w];
count = 0;
for (int i = 0; i < h; i++) {
for (int j = 0; j < w; j++) {
if (!visit[i][j] && a[i][j] == 1) {
DFS(i, j);
count++;
}
}
}
System.out.println(count);
}
}
}
-- 아 변수명 잘못 쓴거 모르고 30분 날렸다
'공부기록 > 백준' 카테고리의 다른 글
[백준] 2775번 부녀회장이 될테야 (1) | 2023.09.27 |
---|---|
[백준] 1110번 더하기 사이클 (0) | 2023.09.27 |
[백준] 2667번 단지번호붙이기 (0) | 2023.09.24 |
[백준] 1260번 DFS와 BFS (0) | 2023.09.23 |
[백준] 1076번 저항 (0) | 2023.09.22 |