public int CalcularTiempoDeInfeccion(Grafo<String> grafo, Vertice<String> in) { int nuevaDist = 0; int maxDist = 0; int n = grafo.listaDeVertices().tamanio(); int[] distancias = new int[n]; ColaGenerica<Vertice<String>> q = new ColaGenerica<Vertice<String>>(); for (int c = 0; c < n; c++) { distancias[c] = Integer.MAX_VALUE; } distancias[in.posicion()] = 0; q.encolar(in); while (!q.esVacia()) { Vertice<String> v = q.desencolar(); nuevaDist = distancias[v.posicion()] + 1; ListaGenerica<Arista<String>> ady = grafo.listaDeAdyacentes(v); ady.comenzar(); while (!ady.fin()) { Arista<String> a = ady.proximo(); if (distancias[a.verticeDestino().posicion()] == Integer.MAX_VALUE) { q.encolar(a.verticeDestino()); distancias[a.verticeDestino().posicion()] = nuevaDist; if (nuevaDist > maxDist) { maxDist = nuevaDist; } } } } return maxDist; }