#include "graph.h" #include "sparse_graph.h" #include "dense_graph.h" #include void simple_evaluation(Graph* const gr) { gr->AddEdge(0, 1, 2.0); gr->AddEdge(0, 2, 4.0); gr->AddEdge(1, 2, 1.0); gr->AddEdge(1, 3, 4.0); gr->AddEdge(1, 4, 2.0); gr->AddEdge(2, 4, 3.0); gr->AddEdge(3, 5, 2.0); gr->AddEdge(4, 3, 3.0); gr->AddEdge(4, 5, 2.0); std::vector sp = gr->Dijkstra(0); std::cout << "Shortest (0,0)-path: Expected 0, actual " << sp[0] << std::endl; std::cout << "Shortest (0,1)-path: Expected 2, actual " << sp[1] << std::endl; std::cout << "Shortest (0,2)-path: Expected 3, actual " << sp[2] << std::endl; std::cout << "Shortest (0,3)-path: Expected 6, actual " << sp[3] << std::endl; std::cout << "Shortest (0,4)-path: Expected 4, actual " << sp[4] << std::endl; std::cout << "Shortest (0,5)-path: Expected 6, actual " << sp[5] << std::endl; } int main(void) { const int n = 6; SparseGraph sg(n); std::cout << "Sparse graph" << std::endl; std::cout << "------------" << std::endl; simple_evaluation(&sg); SparseGraph sg_2 = sg; std::cout << std::endl; std::cout << "Sparse graph, copy constructor" << std::endl; std::cout << "------------------------------" << std::endl; simple_evaluation(&sg_2); SparseGraph sg_3(n-1); sg_3 = sg; std::cout << std::endl; std::cout << "Sparse graph, copy assignment" << std::endl; std::cout << "-----------------------------" << std::endl; simple_evaluation(&sg_3); DenseGraph dg(n); std::cout << std::endl; std::cout << "Dense graph, explicit constructor" << std::endl; std::cout << "---------------------------------" << std::endl; simple_evaluation(&dg); DenseGraph dg_2 = dg; std::cout << std::endl; std::cout << "Dense graph, copy constructor" << std::endl; std::cout << "-----------------------------" << std::endl; simple_evaluation(&dg_2); DenseGraph dg_3(n-1); dg_3 = dg; std::cout << std::endl; std::cout << "Dense graph, copy assignment" << std::endl; std::cout << "----------------------------" << std::endl; simple_evaluation(&dg_3); }