// 2006国内予選D カーリング2.0 #include using namespace std; char dx[] = {-1,1,0,0}; char dy[] = {0,0,-1,1}; int b[20][20]; int w, h; int dfs(int x, int y, int step){ int res = 100; if(step > 10) return 100; for(int i=0;i<4;i++){ int nx = x+dx[i], ny = y+dy[i]; if(nx<0||h<=nx||ny<0||w<=ny||b[nx][ny]==1) continue; while(0<=nx&&nx> w >> h, w){ int sx, sy; for(int i=0;i> b[i][j]; if(b[i][j] == 2) sx = i, sy = j; } } int ans = dfs(sx, sy, 1); cout << (ans != 100 ? ans : -1) << endl; } }