ERRO! grafo dijkstra RESOLVIDO!

4 respostas
H

Oi
No livro Projeto de algoritmos tem o dijkstra implementado, porém quando tento rodá-lo ele apresenta o seguinte erro:

Exception in thread main java.lang.ArrayIndexOutOfBoundsException: 3

at Grafo.insereAresta(Grafo.java:25)

at TestaGrafo.main(TestaGrafo.java:31)

4 Respostas

diegosantiviago

Se você ler o erro, vai encontrar que está aqui:

public void insereAresta (int v1, int v2, int peso) { this.mat[v1][v2] = peso; }

verifique se a posicao que você quer colocar é a mesma, lembre-se que vetor começa com 0.

T

A forma mas boboca de você lidar com arrays em Java sem ter de refazer os algoritmos (que normalmente supõem que as matrizes começam no índice 1 e terminam no índice N) é você alocar um elemento a mais. Por exemplo, se um vetor tem de ir de 1 a 10, aloque um vetor de 11 posições, e deixe a posição 0 sem usar.

for (int i = 1; i <= n; ++i) {
}

É só tomar cuidado então com a propriedade "length" que vai representar o tamanho alocado e não o tamanho N do seu vetor.

H
É realmente estava iniciando o meu vetor na posição 1, mas mesmo iniciando com zero ele dá erro.
public class Principal {
	public static void main (String args[]){
		Grafo matriz = new Grafo(3);
		matriz.insereAresta(0,1, 2);
		matriz.insereAresta(1,2,3);
		matriz.insereAresta(0,2,9);
		
		
	}

}

Exception in thread "main" java.lang.ArrayIndexOutOfBoundsException: 3
at Grafo.(Grafo.java:29)
at Principal.main(Principal.java:4)

O que eu não entendo é que usei estemesmo método insere aresta e o mesmo construtor do grafo para um grafo não valorado e deu certo.

H

Bom amigos, valeu pela ajuda!!!

Criado 17 de junho de 2009
Ultima resposta 19 de jun. de 2009
Respostas 4
Participantes 3