読者です 読者をやめる 読者になる 読者になる

Tamflexの貯蔵庫

やる気のない備忘録

aoj 0071

Aizu Online Judge c++

爆弾の連鎖 | Aizu Online Judge
x,y座標の変換に注意.

int a[8][8];

void f(int x, int y)
{
  a[x][y]=0;
  for(int i=1;i<=3;i++)
  {
    if(x+i>7) break;
    if(a[x+i][y]) f(x+i,y);
  }
  for(int i=1;i<=3;i++)
  {
    if(x-i<0) break;
    if(a[x-i][y]) f(x-i,y);
  }
  for(int i=1;i<=3;i++)
  {
    if(y+i>7) break;
    if(a[x][y+i]) f(x,y+i);
  }
  for(int i=1;i<=3;i++)
  {
    if(y-i<0) break;
    if(a[x][y-i]) f(x,y-i);
  }
}

void solve(int x, int y)
{
  f(x,y);
  REP(i,8)REP(j,8) printf("%d%s",a[i][j],(j==7?"\n":""));
}

int main()
{
  int n; cin >> n;
  string s;
  FOR(c,1,n)
  {
    REP(i,8)
    {
      cin >> s;
      REP(j,8) a[i][j] = s[j]-'0';
    }
    int a,b; cin >> a >> b;
    printf("Data %d:\n",c);
    solve(--b,--a);
  }
  return 0;
}