페이지

4963번: 섬의 개수

https://www.acmicpc.net/problem/4963


$O(thw)$

flood fill 문제


#include<cstdio>
const int fx[] = { 0,0,1,-1,1,1,-1,-1 }, fy[] = { 1,-1,0,0,1,-1,1,-1 };
int t, h, w, c[50][50];
void f(int x, int y) {
    if (x < 0 || y < 0 || x >= h || y >= w || !c[x][y]) return;
    c[x][y] = 0;
    for (int i = 0; i < 8; i++) f(x + fx[i], y + fy[i]);
}
int main() {
    while (scanf("%d %d", &w, &h) && h) {
        int r = 0;
        for (int i = 0; i < h; i++) for (int j = 0; j < w; j++) scanf("%d", &c[i][j]);
        for (int i = 0; i < h; i++) for (int j = 0; j < w; j++) if (c[i][j]) f(i, j), r++;
        printf("%d\n", r);
    }
    return 0;
}

댓글 없음 :

댓글 쓰기