| 1234567891011121314151617181920212223242526272829303132333435363738394041424344454647484950 |
- #include <iostream>
- #include <vector>
- #include <utility> // Para std::pair
- using namespace std;
- typedef pair<int, int> EdgeWeight; // Definimos un alias para una arista con peso
- class Graph {
- private:
- int numVertices; // Número de vértices en el grafo
- vector<vector<EdgeWeight>> adjList; // Lista de adyacencia ponderada
- public:
- // Constructor que inicializa el número de vértices y la lista de adyacencia vacía
- Graph(int V) : numVertices(V), adjList(V) {}
- // Función para agregar una arista al grafo con peso
- void addEdge(int u, int v, int weight) {
- adjList[u].push_back({v, weight});
- adjList[v].push_back({u, weight}); // Por ser no dirigido
- }
- // Función para imprimir la lista de adyacencia del grafo con pesos
- void printGraph() const {
- for (int i = 0; i < numVertices; ++i) {
- cout << "Vértice " << i << ": ";
- for (const auto &adj : adjList[i]) {
- cout << "(" << adj.first << ", " << adj.second << ") ";
- }
- cout << endl;
- }
- }
- };
- int main() {
- // Crear un grafo con 5 vértices
- Graph g(5);
- // Agregar aristas al grafo con pesos
- g.addEdge(0, 1, 4);
- g.addEdge(0, 2, 3);
- g.addEdge(1, 2, 1);
- g.addEdge(3, 4, 2);
- // Imprimir la lista de adyacencia del grafo con pesos
- g.printGraph();
- return 0;
- }
|