0071 - Bombs Chain

#include <iostream>
using namespace std;

bool flg[8][8];

void dfs(int x, int y)	{
	flg[y][x]=false;
	for (int k=1; k<=3; ++k)	{
		if (flg[y][x+k] && x+k<8)	dfs(x+k,y);
		if (flg[y+k][x] && y+k<8)	dfs(x,y+k);
		if (flg[y][x-k] && 0<=x-k)	dfs(x-k,y);
		if (flg[y-k][x] && 0<=y-k)	dfs(x,y-k);
	}
}

void Slove(int number)	{
	int x, y;

	for (int i=0; i<8; ++i)
		for (int j=0; j<8; ++j)	{
			char bomb;
			cin >> bomb;
			flg[i][j]=(bomb-'0');
		}
	cin >> x >> y;
	dfs(x-1,y-1);
	cout << "Data " << number << ":" << endl;
	for (int i=0; i<8; ++i)	{
		for (int j=0; j<8; ++j)
			cout << flg[i][j];
		cout << endl;
	}
}

int main(void)	{
	int n;

	cin >> n;
	for (int i=0; i<n; ++i)
		Slove(i+1);
	return 0;
}

再帰するだけ。