main.cpp 1.4 KB

1234567891011121314151617181920212223242526272829303132333435363738394041424344454647484950
  1. #include <iostream>
  2. #include <vector>
  3. #include <utility> // Para std::pair
  4. using namespace std;
  5. typedef pair<int, int> EdgeWeight; // Definimos un alias para una arista con peso
  6. class Graph {
  7. private:
  8. int numVertices; // Número de vértices en el grafo
  9. vector<vector<EdgeWeight>> adjList; // Lista de adyacencia ponderada
  10. public:
  11. // Constructor que inicializa el número de vértices y la lista de adyacencia vacía
  12. Graph(int V) : numVertices(V), adjList(V) {}
  13. // Función para agregar una arista al grafo con peso
  14. void addEdge(int u, int v, int weight) {
  15. adjList[u].push_back({v, weight});
  16. adjList[v].push_back({u, weight}); // Por ser no dirigido
  17. }
  18. // Función para imprimir la lista de adyacencia del grafo con pesos
  19. void printGraph() const {
  20. for (int i = 0; i < numVertices; ++i) {
  21. cout << "Vértice " << i << ": ";
  22. for (const auto &adj : adjList[i]) {
  23. cout << "(" << adj.first << ", " << adj.second << ") ";
  24. }
  25. cout << endl;
  26. }
  27. }
  28. };
  29. int main() {
  30. // Crear un grafo con 5 vértices
  31. Graph g(5);
  32. // Agregar aristas al grafo con pesos
  33. g.addEdge(0, 1, 4);
  34. g.addEdge(0, 2, 3);
  35. g.addEdge(1, 2, 1);
  36. g.addEdge(3, 4, 2);
  37. // Imprimir la lista de adyacencia del grafo con pesos
  38. g.printGraph();
  39. return 0;
  40. }