Busca em Largura com Matriz de Adjacência em JAVA

Olá.
Tenho um algoritmo que gera uma matriz de adjacência. Segue:

public static void main(String[] args) throws IOException {
    String fileName = "C:\\Users\\MATEUS\\Documents\\R\\dados\\generosFinal.csv"; //LOCAL ONDE ESTÁ O ARQUIVO
    BufferedReader in = new BufferedReader(new FileReader(fileName));
    StringBuffer sb = new StringBuffer((int) new File(fileName).length());

    String linha = in.readLine();

    while (linha != null) {
        sb.append(linha + "\n");
        linha = in.readLine();
    }

    in.close();
    String text = sb.toString();
    ArrayList<String> generos = new ArrayList<String>();

    int n = 1228;

    String lines[] = text.split("\n");

    for (int i = 0; i < n; i++) {
        lines[i] = lines[i].replace("{", "");
        lines[i] = lines[i].replace("}", "");

        String temp[] = lines[i].split(";");
        String current = temp[0];
        generos.add(temp[0]);
        lines[i] = lines[i].replace(temp[0], generos.indexOf(current) + "");

        if (temp[1].contains(",")) {
            String temp2[] = temp[1].split(",");
            for (int j = 0; j < temp2.length; j++) {

                if (!generos.contains(temp2[j])) {
                    generos.add(temp2[j]);
                }

                lines[i] = lines[i].replace(temp2[j], generos.indexOf(temp2[j]) + "");
            }
        } else {
            if (!generos.contains(temp[1]) && !temp[1].equals("NULL")) {
                generos.add(temp[1]);
                lines[i] = lines[i].replace(temp[1], generos.indexOf(temp[1]) + "");
            } else if (!temp[1].equals("NULL")) {
                lines[i] = lines[i].replace(temp[1], generos.indexOf(temp[1]) + "");
            }
        }
    }

    System.out.println("Total: " + generos.size());
    int adj[][] = new int[generos.size()][generos.size()];
    for (int i = 0; i < n; i++) {
        System.out.println(lines[i]);
    }

    for (int i = 0; i < n; i++) {
        String temp[] = lines[i].split(";");

        if (temp[1].contains(",")) {
            String temp2[] = temp[1].split(",");
            for (int j = 0; j < temp2.length; j++) {
                adj[Integer.parseInt(temp[0])][Integer.parseInt(temp2[j])] = 1;

            }
        } else {
            if (!temp[1].equals("NULL")) {
                adj[Integer.parseInt(temp[0])][Integer.parseInt(temp[1])] = 1;
            }
        }
    }

    for (int i = 0; i < adj.length; i++) {
        for (int j = 0; j < adj.length; j++) {
            if (adj[i][j] == 1) {
                System.out.println(generos.get(j) + " é subgênero de " + generos.get(i));
            }
        }
    }

    int visitados[] = new int[adj.length];

    for (int i = 0; i < adj.length; i++) {
        visitados[i] = 0;
    }
}

Estou enfrentando uma certa dificuldade para implementar uma busca em largura no java apenas com uma matriz de adjacência.
Encontrei (obviamente) muita coisa sobre busca em largura, porém não achei muito sobre implementá-la tendo apenas a matriz de adjacência.
Dei início ao código da busca em largura criando um vetor e “zerando” ele, porém até agora foi o que eu consegui. rsrsrs

Qualquer dica é de grande ajuda.

Obs.: sou usuário novo e não posso anexar nada. Vou deixar o link do drive aqui para download do arquivo que gera a matriz: Arquivo

Uma matriz de adjacência é simplesmente uma forma de se representar um grafo. O grafo em si continua sendo formado por nós, interligados como a matriz descreve.

Portanto, os algoritmos de busca em largura que você viu devem continuar funcionando normalmente.