#include #include struct estruturaMatriz{ int valor; int flag_marca_visitado; }typedef EstruturaMatriz; void resposta(EstruturaMatriz m[5][5],int linha,int coluna){ int valorLinha,valorColuna; int f1=0,f2=0,f3=0,f4=0; /// olharei nas 4 direções possíveis if(m[linha][coluna].valor==0){ m[linha][coluna].flag_marca_visitado = 1; /// marca como visitado o vértice que chegar valorLinha = linha; valorColuna = coluna; if(valorColuna > 0 && m[valorLinha][valorColuna-1].valor==0 && m[valorLinha][valorColuna-1].flag_marca_visitado==0){ //printf("esquerda = %d\n\n",m[valorLinha][valorColuna-1].valor); f1 = 1; resposta(m,valorLinha,valorColuna-1); } if(valorColuna < 4 && m[valorLinha][valorColuna+1].valor==0 && m[valorLinha][valorColuna+1].flag_marca_visitado==0){ //printf("direita = %d\n\n",m[valorLinha][valorColuna+1].valor); f2 = 1; resposta(m,valorLinha,valorColuna+1); } if(valorLinha > 0 && m[valorLinha-1][valorColuna].valor==0 && m[valorLinha-1][valorColuna].flag_marca_visitado==0){ //printf("cima = %d\n\n",m[valorLinha-1][valorColuna].valor); f3 = 1; resposta(m,valorLinha-1,valorColuna); } if(valorLinha < 4 && m[valorLinha+1][valorColuna].valor==0 && m[valorLinha+1][valorColuna].flag_marca_visitado==0){ //printf("abaixo = %d\n\n",m[valorLinha+1][valorColuna].valor); f4 = 1; resposta(m,valorLinha+1,valorColuna); } else { /*printf("voltei no backtracking!\n"); printf("valor da linha = %d\n",valorLinha); printf("valor da coluna = %d\n",valorColuna);*/ return; } }/// fim do if que verifica se é 0 } int main() { struct estruturaMatriz m[5][5]; int i,j,t; scanf("%d",&t); while(t--){ for(i=0;i<5;i++){ for(j=0;j<5;j++){ scanf("%d",&m[i][j].valor); m[i][j].flag_marca_visitado = 0; } } resposta(m,0,0); /*for(i=0;i<5;i++){ for(j=0;j<5;j++){ printf("%d ",m[i][j].flag_marca_visitado); } printf("\n"); }*/ if(m[4][4].flag_marca_visitado==1){ printf("COPS\n"); }else{ printf("ROBBERS\n"); } } return 0; }