public void AddExploredEdgeToPath1(Edge edge)
        {
            this.Path1.AddExploredEdge(edge);

            SearchEvent ev = new SearchEvent(SearchEventType.AddedEdgeToExplored, edge);
            this.SEM.AddEvent(ev);
        }
        public void RemoveExplored(Edge edge)
        {
            this.ExploredEdges.Remove(edge);

            SearchEvent ev = new SearchEvent(SearchEventType.RemovedEdgeFromExplored, edge);
            this.EventManager.AddEvent(ev);
        }
        public void AddTraveledEdge(Edge edge)
        {
            this.TraveledEdges.Add(edge);

            SearchEvent ev = new SearchEvent(SearchEventType.AddedEdgeToTraveled, edge);
            this.EventManager.AddEvent(ev);
        }
        public void RemoveExploredFromPath2(Edge edge)
        {
            this.Path2.RemoveExplored(edge);

            SearchEvent ev = new SearchEvent(SearchEventType.RemovedEdgeFromExplored, edge);

            this.SEM.AddEvent(ev);
        }
        public void AddTraveledEdgeToPath2(Edge edge)
        {
            this.Path2.AddTraveledEdge(edge);

            SearchEvent ev = new SearchEvent(SearchEventType.AddedEdgeToTraveled, edge);

            this.SEM.AddEvent(ev);
        }
        public void AddExploredEdgeToPath1(Edge edge)
        {
            this.Path1.AddExploredEdge(edge);

            SearchEvent ev = new SearchEvent(SearchEventType.AddedEdgeToExplored, edge);

            this.SEM.AddEvent(ev);
        }
        public void RemoveExplored(Edge edge)
        {
            this.ExploredEdges.Remove(edge);

            SearchEvent ev = new SearchEvent(SearchEventType.RemovedEdgeFromExplored, edge);

            this.EventManager.AddEvent(ev);
        }
        public void AddTraveledEdge(Edge edge)
        {
            this.TraveledEdges.Add(edge);

            SearchEvent ev = new SearchEvent(SearchEventType.AddedEdgeToTraveled, edge);

            this.EventManager.AddEvent(ev);
        }
        public void RemoveExplored(Vertex vert)
        {
            Edge edgeToRemove = ExploredEdges.Single(e => e.VerticeTo == vert);
            this.ExploredEdges.Remove(edgeToRemove);

            SearchEvent ev = new SearchEvent(SearchEventType.RemovedEdgeFromExplored, edgeToRemove);
            this.EventManager.AddEvent(ev);
        }
        public void RemoveExploredFromPath2(Vertex vert)
        {
            Edge edgeToRemove = this.Path2.ExploredEdges.Single(e => e.VerticeTo == vert);

            this.Path2.RemoveExplored(vert);

            SearchEvent ev = new SearchEvent(SearchEventType.RemovedEdgeFromExplored, edgeToRemove);

            this.SEM.AddEvent(ev);
        }
        public void RemoveExplored(Vertex vert)
        {
            Edge edgeToRemove = ExploredEdges.Single(e => e.VerticeTo == vert);

            this.ExploredEdges.Remove(edgeToRemove);

            SearchEvent ev = new SearchEvent(SearchEventType.RemovedEdgeFromExplored, edgeToRemove);

            this.EventManager.AddEvent(ev);
        }
        public void RemoveExploredFromPath2(Edge edge)
        {
            this.Path2.RemoveExplored(edge);

            SearchEvent ev = new SearchEvent(SearchEventType.RemovedEdgeFromExplored, edge);
            this.SEM.AddEvent(ev);
        }
        public void RemoveExploredFromPath2(Vertex vert)
        {
            Edge edgeToRemove = this.Path2.ExploredEdges.Single(e => e.VerticeTo == vert);
            this.Path2.RemoveExplored(vert);

            SearchEvent ev = new SearchEvent(SearchEventType.RemovedEdgeFromExplored, edgeToRemove);
            this.SEM.AddEvent(ev);
        }
        public void AddTraveledEdgeToPath2(Edge edge)
        {
            this.Path2.AddTraveledEdge(edge);

            SearchEvent ev = new SearchEvent(SearchEventType.AddedEdgeToTraveled, edge);
            this.SEM.AddEvent(ev);
        }
 public void AddEvent(SearchEvent e)
 {
     events.Add(e);
 }
 public void AddEvent(SearchEvent e)
 {
     events.Add(e);
 }