AOJ 0071 - Bombs Chain
深さ優先で行きましょう.
#include <iostream> int map[14][14]; void dfs(int x, int y){ map[y][x] = 0; int vx[] = {-1, 0, 0, 1}, vy[] = {0, -1, 1, 0}; for(int i=0;i<4;i++){ for(int j=1;j<=3;j++){ if(map[y+vy[i]*j][x+vx[i]*j] == 1) dfs(x+vx[i]*j, y+vy[i]*j); } } return; } int main(){ int n; std::cin >> n; for(int c=1;c<=n;c++){ for(int i=0;i<14*14;i++){ map[i/14][i%14] = 0; } for(int i=0;i<8;i++){ std::string s; std::cin >> s; for(int j=0;j<8;j++) map[i+3][j+3] = s[j] - '0'; } int sx, sy; std::cin >> sx >> sy; dfs(sx-1+3, sy-1+3); std::cout << "Data " << c << ":\n"; for(int i=0+3;i<14-3;i++){ for(int j=0+3;j<14-3;j++) std::cout << map[i][j]; std::cout << "\n"; } } }