/** * Constructor copia. * * @param original Grafo que va a ser copiado. */ public Grafo(Grafo original) { this(); this.nAristas = original.nAristas; this.nVertices = original.nVertices; int n = original.nVertices; // Copiamos matriz de adyacencias for (int i = 0; i < n; i++) { Vertice v = new Vertice<>(original.vertices.get(i)); Integer grado = new Integer((int) original.grados.get(i)); if (i == 0) { this.vertices.set(0, v); this.grados.set(0, grado); } else { this.vertices.add(v); this.grados.add(grado); this.matrizAdyacencias.add(new ArrayList<Arista<N>>()); } for (int j = 0; j < n; j++) { Arista a = null; if (i != j && original.adyacentes(i, j)) { a = new Arista(original.arista(i, j)); } if (i == 0 && j == 0) { this.matrizAdyacencias.get(0).set(0, a); } else { this.matrizAdyacencias.get(i).add(a); } } } // Copiamos listas de adyacencias for (int i = 0; i < this.nVertices; i++) { ArrayList<Vertice<T>> nuevaLista = new ArrayList<>(); for (int j = 0; j < this.nVertices; j++) { if (i != j && this.adyacentes(i, j)) { nuevaLista.add(this.vertice(j)); } } this.listasAdyacencias.put(i, nuevaLista); } }