Beta Round #56-B: Serial Time!

問題概要

10*10*10の立体で、あるマスからflood fillする問題。

感想

座標系が分かりにくくて困った。サンプルも例によって貧弱だから確認できないし。

char board[15][15][15];
int Z, Y, X;
int dx[] = {0,0,0,0,1,-1};
int dy[] = {0,0,1,-1,0,0};
int dz[] = {1,-1,0,0,0,0};

void dfs(int z, int y, int x){
    if(board[z][y][x] != '.') return ;
    board[z][y][x] = '*';
    for(int k=0; k<6; k++){
        int nz = z + dz[k], ny = y + dy[k], nx = x + dx[k];
        if(0<=nz && nz<Z && 0<=ny && ny<Y && 0<=nx && nx<X)
            dfs(nz,ny,nx);
    }
}

int main(){
    scanf("%d%d%d ",&Z,&Y,&X);
    int i,j,k,sy,sx;
    REP(i,Z)REP(j,Y){
        scanf("%s ",board[i][j]);
    }
    scanf("%d%d ",&sy,&sx);
    dfs(0,sy-1,sx-1);
    int ans = 0;
    REP(i,Z)REP(j,Y)REP(k,X){
        if(board[i][j][k] == '*') ans++;
    }
    printf("%d\n",ans);
    return 0;
}