Classe Grafo do algoritmo de prim
public class Grafo { private Integer[][] matriz; private Integer[] visitados; private Integer[] origem; private Integer[] destino; private Integer[] peso; private int count; public Grafo(int linhas, int colunas){
matriz = new Integer[linhas][colunas]; origem = new Integer[linhas]; destino = new Integer[linhas]; peso = new Integer[linhas]; count = 0; visitados = new Integer[linhas];
}
public void addValores(Scanner scan){ for(int i = 0; i < matriz.length; i++){ System.out.println("Digite os valores da linha "+i+" da matriz:"); for(int j = 0; j < matriz[0].length; j++){ matriz[i][j] = scan.nextInt(); } } }
public void mostrarMatriz(){ for(int i = 0; i < matriz.length; i++){ System.out.println(""); for(int j = 0; j < matriz[0].length; j++){ System.out.print(matriz[i][j]); } } }
public void gerarArvore(Scanner scan){ System.out.println("Digite o vertice inicial: "); int start = scan.nextInt(); int[] menorValor = new int[3];
menorValor[0] = Integer.MAX_VALUE;
for(int i = 0; i < matriz.length; i++){
for(int j = 0; j < matriz[0].length; j++){
if(matriz[start][j] < menorValor[0] && matriz[start][j] != 0){ menorValor[0] = matriz[start][j]; menorValor[1] = j; menorValor[2] = start; } if( AnteriorMenor()[0] < menorValor[0] && AnteriorMenor()[0] != 0){ menorValor[0] = AnteriorMenor()[0]; menorValor[1] = AnteriorMenor()[1]; menorValor[2] = AnteriorMenor()[2]; }
} visitados[count] = start; if(JaVisitado(menorValor[1]) && verificaEspacoVisitados()){ // verifica se o proximo ja foi visitado desfazCiclo(menorValor[1]); i--; menorValor[0] = Integer.MAX_VALUE; continue; } if(!JaVisitado(menorValor[1])){
origem[count] = menorValor[2]; destino[count] = menorValor[1]; peso[count] =