TOPIC

100% Wrong Answer

Marcela asked 10 months ago

Oi pessoal,

Estou recebendo 100% de Wrong Answer no código apesar de, manualmente, as respostas estarem batendo com o exemplo e o uDebug. Além disso, realizei vários testes e nenhuma resposta deu errado.

Coincidentemente (ou não), percebi nas minhas submissões que o tempo de julgamento do URI para esse exercício especificamente estava maior que o normal.

Alguém teve um problema parecido ou sabe como me ajudar?

Obrigada!!

(Código nos comentários)

Remember not post solutions. Your post may be reviewed by our moderators.

  • Lucas Rocha dos Santos replied 10 months ago

    Testa a seguinte entrada no seu programa:

    1
    26 3
    a l
    a b
    a z

    a saída que obtive com seu programa foi:

    Case #1:
    a,b,z,l,
    c,
    d,
    e,
    f,
    g,
    h,
    i,
    j,
    k,
    m,
    n,
    o,
    p,
    q,
    r,
    s,
    t,
    u,
    v,
    w,
    x,
    y,
    23 connected components
    

    O z e o l foram invertidos.

  • Marcela replied 10 months ago

    Lucas, obrigada!!!

    Realmente o problema do Wrong Answer era esse! Descobri que o HashSet tava desordenando a minha resposta!

    Depois acabou dando um problema de Presentation mas foi solucionado!

    Valeu <3

  • Marcela replied 10 months ago

    import java.util.*;
    public class Main {
        static int[][] matriz;
        static int testes;
        static int vertices;
        static int arestas;
        static String resposta;
        static int qtdUm;
        static int conexoes;
        public static void main(String[] args) {
            Scanner sc = new Scanner(System.in);
            testes = sc.nextInt();
            for(int t = 0; t < testes; t++){
                vertices = sc.nextInt();
                arestas = sc.nextInt();
                matriz = new int[vertices][vertices];
                conexoes = 0;            
                while (arestas > 0){
                    preencheMatriz(sc.next().charAt(0) - 97, sc.next().charAt(0) - 97);
                    arestas--;
                }
                printaResposta(t);
            }
            System.out.println();
            sc.close();
        }
    
        static void preencheMatriz(int linha, int coluna){
            matriz[linha][coluna] = 1;
            matriz[coluna][linha] = 1;
        }
    
        static void percorreLinha(int i){
            //System.out.println("sou o i: " + i);
            for(int j = 0; j < vertices; j++){
                if (matriz[i][j] == 1 && i != j){
                    qtdUm++;
                    matriz[i][i] = 1;
                    matriz[j][j] = 1;
                    //System.out.println("sou o j: " + j);
                    resposta += (char)(i + 97);
                    resposta += (char)(j + 97);
                    matriz[i][j] = 0;
                    matriz[j][i] = 0;
                    percorreLinha(j);
                }
                if (matriz[i][i] == 1) qtdUm++;
    
            }
        }
    
        static void printa(){
            for(int i = 0; i < vertices; i++){
                for (int j = 0; j < vertices; j++){
                    System.out.print(matriz[i][j]);
                }
                System.out.println();
            }
        }
        static void printaConexao(int i) {
            if (resposta != "" || qtdUm == 0) {
                if (qtdUm == 0) resposta += (char)(i + 97);
    
                char[] chars = resposta.toCharArray();
                Arrays.sort(chars);
                Set<Character> caracteres = new HashSet<>();
                for (char a: chars){
                    caracteres.add(a);
                }
                Iterator it = caracteres.iterator();
                while(it.hasNext()){
                    System.out.print(it.next() + ",");
                }
                conexoes++;
                System.out.println("");
            }
        }
        static void printaResposta(int t) {
            System.out.println();
            System.out.println("Case #" + (t+1) + ":");
            for(int i = 0; i < vertices; i++){
                resposta = "";
                qtdUm = 0;
                percorreLinha(i);                    
                printaConexao(i);
            }
            System.out.println(conexoes + " connected components");
        }
    }