public Edge addAdjacencies(Edge newEdge) { Edge edge = Adjacencies.Find(x => x.PathId == newEdge.PathId); if (edge != null) { Adjacencies.Remove(edge); } Adjacencies.Add(newEdge); return(newEdge); }
public Graph(List <DbAdjacency> adjacencies, List <DbNode> nodes) : this() { foreach (var adj in adjacencies) { var startNode = nodes.FirstOrDefault(n => n.Id == adj.StartId); var stopNode = nodes.FirstOrDefault(n => n.Id == adj.StopId); Adjacencies.Add(new KeyValuePair <string, string>(startNode.UniqueId, stopNode.UniqueId)); } foreach (var node in nodes) { NodesList.Add(node.Label, new Node(node)); } }
public void PairRooms(Room r1, Room r2) { if (r1.UniqueID == r2.UniqueID) { throw new InvalidOperationException("Cannot pair a room with itself."); } foreach (var pair in Adjacencies) { if ((r1.UniqueID == pair.Item1.UniqueID && r2.UniqueID == pair.Item2.UniqueID) || (r1.UniqueID == pair.Item2.UniqueID && r2.UniqueID == pair.Item1.UniqueID)) { throw new Exception("Pair already paired."); } } var adjacentRooms = r1.NumericID < r2.NumericID ? Tuple.Create(r1, r2) : Tuple.Create(r2, r1); Adjacencies.Add(adjacentRooms); Console.WriteLine($"{r1.Name}, {r2.Name} are paired"); }