Floyd Warshall

1 resposta
ricardocomp

Olá pessoal,
Eu estou implementando o algoritmo de Floyd Warshall
para submeter no sistema UVA JUDGE e gostaria de pedir
uma ajuda eu não estou conseguindo fazer com o Algoritmo de
Floy Warshall execute corretamente. Será que alguém pode me dar uma ajuda?

import java.util.ArrayList;
import java.util.List;
import java.util.Scanner;



class WeShipCheap {
    
    static int[][] matriz;

    static final Integer INFINITO = Integer.MAX_VALUE;
    
    //Método que atribui o valor infinito para todas as posições da matriz
    static void infinitza(int tam) {
	int i, j;
	for (i = 0; i < tam; i++) {
            for (j = 0; j < tam; j++) {
                matriz[i][j] = INFINITO;
            }
	}
	for (i = 0; i < tam; i++) {
            matriz[i][i] = 0;
	}
    }
    
    //Método que implementa o algoritmo de Floyd-Warshall
    static void floyd(int tam) {
	int i, j, k;
	for (k = 0; k < tam; k++) {
            for (i = 0; i < tam; i++) {
                for (j = 0; j < tam; j++) {
                    if (matriz[i][j] > matriz[i][k] + matriz[k][j]) {
                        matriz[i][j] = matriz[i][k] + matriz[k][j];
                    }
                }
            }
	}
    }

    static void imprimeMatriz(int valorMax){
        int i = 0;
        int j = 0;
        for (i = 0; i < valorMax; i++) {
            for (j = 0; j < valorMax; j++) {
                System.out.print(matriz[i][j] + "  ");
            }
            System.out.println();
        }
    }

    public static void main(String[] args) {
        int i = 0;
        int j = 0;
        int numConexoes = 0;
        String origem = null;
        String destino = null;
        int valorMax = 0;
        List<String> listaNos = new ArrayList<String>();
        int[] listaAux = null;

        Scanner scanner = new Scanner(System.in);
        while (scanner.hasNext()) {
            numConexoes = scanner.nextInt();
            for (i = 0; i < numConexoes + 1; i++) {
                origem = scanner.next();
                destino = scanner.next();
                listaNos.add(origem);
                listaNos.add(destino);
            }
            listaAux = new int[listaNos.size()];
            
            for (i = 0; i < listaNos.size(); i++) {
                String no = listaNos.get(i);                
                for (j = 0; j < listaNos.size(); j++) {
                    if(no.equals(listaNos.get(j))){
                        listaAux[j] = listaNos.indexOf(no);
                        valorMax = listaNos.indexOf(no);
                    }
                }                
            }                         
            valorMax = valorMax + 1;
            matriz = new int[valorMax][valorMax];
            infinitza(valorMax);
            System.out.println(listaNos);
            for (i = 0; i < listaAux.length; i++) {
                System.out.print(listaAux[i] + "  ");
            }
            System.out.println();
            System.out.println(valorMax);
            System.out.println();
            for (i = 0; i < valorMax - 1; i++) {
                matriz[listaAux[i]][listaAux[i+1]] = matriz[listaAux[i+1]][listaAux[i]] = 1;
            }
            //floyd(valorMax);
            System.out.println();
            imprimeMatriz(valorMax);
        }
    }

}

[]'s.

1 Resposta

ricardocomp

O problema é o We Ship Cheap:

http://uva.onlinejudge.org/external/7/762.html

[]'s.

Criado 15 de abril de 2010
Ultima resposta 15 de abr. de 2010
Respostas 1
Participantes 1