Galera empaquei na implementação do dijkstra, segue o código que eu tenho implementado:
private Nodo<E> extractMin(List<Nodo><E>> fila){
Nodo<E> min = fila.get(0);
for(Nodo<E> n: fila){
if((Integer)min.getItem() > (Integer)n.getItem()){
min = n;
}
}
return min;
}
private int[] initDj(Nodo<E> n){
int[] init = new int[nodos.size()];
for(int i = 0;i < init.length; i++){
if(nodos.get(i).equals(n)){
init[i] = 0;
}
else{
init[i] = Integer.MAX_VALUE;
}
}
return init;
}
public void dijkstra(E origem) {
Nodo<E> org = procuraNodo(origem);
Nodo<E> aux = null;
List<Nodo><E>> fila = new ArrayList<Nodo><E>>(nodos.size());
int[] dist = initDj(org);
if(org != null){
fila.add(org);
while(!fila.isEmpty()){
aux = extractMin(fila);
fila.remove(aux);
for(int i = 0; i < nodos.size(); i++){
if(aux.getAdjacentes().contains(nodos.get(i)) && fila.contains(nodos.get(i))){
}
}
}
}
}
PS.: Usei List por que não tava com saco de ficar implementando uma Queue, nas férias eu faço uma fila bonitinha ;)
