$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; }
댓글 없음 :
댓글 쓰기