Skip to content
Snippets Groups Projects
Commit 8169eaa6 authored by jigjunior's avatar jigjunior
Browse files

Ultimos ajustes no codigo...

parent 9674e32c
No related branches found
No related tags found
No related merge requests found
......@@ -27,13 +27,13 @@ class FloydWarshall {
* Imprime caminho, que deve ser calculado previamente.
* @return 0 se for impresso alguma coisa, 1 caso contrário.
*/
int imprimir_caminho(int final) {
int imprimir_caminho(int inicial, int fin) {
std::list<t_vertice> caminho = listar_caminho(final);
std::list<int> caminho = listar_caminho(inicial, fin);
std::cout << "Caminho: ";
std::copy(caminho.begin(), caminho.end(),
std::ostream_iterator<t_vertice>(std::cout, " "));
std::ostream_iterator<int>(std::cout, " "));
std::cout << std::endl;
return 0;
......@@ -104,11 +104,11 @@ class FloydWarshall {
return 0;
}
std::list<t_vertice> listar_caminho(t_vertice vertice) {
std::list<int> listar_caminho(int inicial, int fin) {
std::list<t_vertice> path;
for ( ; vertice != -1; vertice = vet_anteriores_[vertice]) {
path.push_front(vertice);
std::list<int> path;
for (int vertice = inicial; vertice != -1; vertice = grafo_proximos_.get_value(vertice, fin)) {
path.push_back(vertice);
}
return path;
......@@ -121,12 +121,11 @@ class FloydWarshall {
void imprime_grafo() {
std::cout << grafo_ << std::endl;
//std::cout << grafo_proximos_ << std::endl;
}
protected:
t_matriz_adjacencia grafo_, grafo_proximos_;
std::vector<t_vertice> vet_anteriores_;
std::vector<t_peso> vet_distancia_;
};
......@@ -155,7 +154,7 @@ class FloydWarshallSerial: public FloydWarshall {
if (lik + lkj < lij) {
//std::cout << "Atualizando..." << std::endl;
grafo_.values_[i * n + j] = lik + lkj;
//grafo_proximos_.set_value(i, j, m.get_value(i, k));
//grafo_proximos_.set_value(i, j, k);
}
}
}
......@@ -193,7 +192,7 @@ class FloydWarshallParalelo: public FloydWarshall {
if (lik + lkj < lij) {
//std::cout << "Atualizando..." << std::endl;
grafo_.values_[i * n + j] = lik + lkj;
//grafo_proximos_.set_value(i, j, m.get_value(i, k));
//grafo_proximos_.set_value(i, j, k);
}
}
}
......
......@@ -27,7 +27,7 @@ int main(int argc, char **argv) {
std::cout << "Calculando Paralelo..." << std::endl;
floyd_warshall_paralelo.calcular_caminho(qtde_vertices);
floyd_warshall_paralelo.imprime_grafo();
//floyd_warshall_paralelo.imprimir_caminho(v_final);
//floyd_warshall_paralelo.imprimir_caminho(3, 1);
}
#else
......@@ -39,7 +39,7 @@ int main(int argc, char **argv) {
std::cout << "Calculando Serial..." << std::endl;
floyd_warshall_serial.calcular_caminho(qtde_vertices);
floyd_warshall_serial.imprime_grafo();
//floyd_warshall_serial.imprimir_caminho(v_final);
//floyd_warshall_paralelo.imprimir_caminho(3, 1);
}
#endif
......
#pragma once
#define INC_ALLOC 5000
typedef double t_distancia;
typedef double t_peso;
typedef int t_vertice;
typedef struct vizinho {
t_vertice parceiro; /* a quem está ligado */
t_vertice proximo; /* qual é o próximo vértice para andar até chegar */
t_peso distancia; /* qual a distancia para chegar */
t_peso peso; /* peso da aresta que liga ao parceiro */
vizinho(t_vertice arg_parceiro, t_peso arg_peso):
parceiro(arg_parceiro),
proximo(-1),
distancia(arg_peso),
peso(arg_peso) {
};
} vizinho;
typedef Matrix<double> t_matriz_adjacencia;
0% Loading or .
You are about to add 0 people to the discussion. Proceed with caution.
Please register or to comment