public void RecorridoAnchura(Vertice a) { var alcanzados = new List <Alcanzados>(); var alc = new Alcanzados(); int[] d = new int[ListaVertices.Count]; int[] pi = new int[ListaVertices.Count]; Colors[] visit = new Colors[ListaVertices.Count]; for (int i = 0; i < ListaVertices.Count; i++) { visit[i] = Colors.White; } int pos = ListaVertices.IndexOf(a); visit[pos] = Colors.Grey; d[pos] = 0; Queue <int> q = new Queue <int>(); q.Enqueue(pos); while (q.Count != 0) { int tmp = q.Dequeue(); foreach (var v in ListaVertices[tmp].AdyLista) { if (ValorDelSigno(ListaVertices[tmp], ListaVertices[v.Pos], v)) { if (visit[v.Pos] == Colors.White) { alc.name = ListaVertices[v.Pos].Nombre; alc.sgn = ListaVertices[v.Pos].signo; alcanzados.Add(alc); visit[v.Pos] = Colors.Grey; d[v.Pos] = d[tmp] + 1; pi[v.Pos] = tmp; q.Enqueue(v.Pos); } } } visit[tmp] = Colors.Black; } if (a.Signo != 0) { Console.WriteLine(); Console.WriteLine("La falla en la variable " + a.Nombre + " con signo : " + a.signo + " se propaga a las variables:"); for (int i = 0; i < alcanzados.Count; i++) { if (alcanzados[i].sgn != 0) { Console.WriteLine("=> " + alcanzados[i].name + " con signo " + alcanzados[i].sgn); } } } }
public void AgregarVertice(Vertice a) { if (GrafoCount < ListaVertices.Count) { for (int i = 0; i < ListaVertices.Count; i++) { if (ListaVertices[i] == null) { ListaVertices[i] = new Vertice(a.Nombre, a.LimInferior, a.LimSuperior, a.Valor); GrafoCount++; break; } } } else { ListaVertices.Add(new Vertice(a.Nombre, a.LimInferior, a.LimSuperior, a.Valor)); GrafoCount++; } }