/* [NWERC'06] SUDOKU by: Jan Kuipers */ using namespace std; #include #include #include #include int solfound; vector rowused,colused,row,col; vector mapab,mapba,mapdep; vector sol,sud; void selectcol (int n) { if (n==9) solfound=1; if (solfound) return; int fr = n%3==0 ? 0 : col[n/3*3]/3*3; int to = n%3==0 ? 9 : fr+3; for (int i=fr; i old=sud; for (int y=0; y<9; y++) for (int x=0; x<9; x++) sud[8-x][y]=old[y][x]; } int main () { int runs; cin>>runs; while (runs--) { sol = sud = vector(9); for (int i=0; i<9; i++) cin>>sol[i]; for (int i=0; i<9; i++) cin>>sud[i]; row=col=rowused=colused=vector(9,0); mapab=mapba=mapdep=vector(9,-1); solfound=0; selectrow(0); rotate(); selectrow(0); cout << (solfound ? "Yes" : "No") << endl; } return 0; }