public double GetExces(Retea retea) { List <Arc> arceIntra = retea.Arce.Where(a => a.Y.Id == Id).ToList(); List <Arc> arceIes = retea.Arce.Where(a => a.X.Id == Id).ToList(); double exces = arceIntra.Sum(a => a.Flux) - arceIes.Sum(a => a.Flux); return(exces); }
public string AsString(Retea retea) { StringBuilder sb = new StringBuilder(); sb.AppendLine(); sb.Append("Drum: "); Arce.ForEach(a => sb.Append($"{a.ToString()}, ")); return(sb.ToString()); }
public double GetCapacitateRezidualaMin(Retea retea) { IEnumerable <Arc> arce = Arce.Where(arc => arc.GetCapacitateReziduala(retea) > 0); if (arce.Count() == 0) { return(-1); } return(arce.Min(arc => arc.GetCapacitateReziduala(retea))); }
private void SetArce(Retea retea) { for (int index = 0; index < Noduri.Count - 1; index++) { Arc arc = retea.Arce.FirstOrDefault(a => a.X.Id == Noduri[index].Id && a.Y.Id == Noduri[index + 1].Id); if (arc == null) { throw new InvalidOperationException($"Nu exista arc intre nodul {Noduri[index].Id} si {Noduri[index + 1].Id}"); } Arce.Add(arc); } }
public double GetCapacitateReziduala(Retea retea) { Arc arcInvers = retea.Arce.FirstOrDefault(arc => arc.X.Id == Y.Id && arc.Y.Id == X.Id); if (arcInvers == null) { arcInvers = new Arc { X = Y, Y = X, Capacitate = 0, Flux = 0 }; } return(Capacitate - Flux + arcInvers.Flux); }
public Drum(Retea retea, List <Nod> noduri) { Noduri = noduri; SetArce(retea); }
public Retea(Retea retea) { Noduri = new List <Nod>(retea.Noduri); Arce = new List <Arc>(retea.Arce); }
internal string AsString(Retea retea) { return($"({X}) -------- f={Flux}, c={Capacitate}, r={GetCapacitateReziduala(retea)} -----------> ({Y})\n"); }
public bool EsteAdmisibil(Retea retea) { return(GetCapacitateReziduala(retea) > 0 && X.Distanta - Y.Distanta == 1); }