public void Contract(Edge edge) { var toRemove = Edges.Where( e => e == edge || (e.Left == edge.Left && e.Right == edge.Right) || (e.Left == edge.Right && e.Right == edge.Left)).ToArray(); foreach (var item in toRemove) Edges.Remove(item); Nodes.Remove(edge.Right); var toMove = Edges.Where(e => e.Left == edge.Right || e.Right == edge.Right); foreach (var item in toMove) { if (item.Right == edge.Right) item.Right = edge.Left; else item.Left = edge.Left; } }
public void Contract(Edge edge) { throw new System.NotImplementedException(); }