private void shortestPathSearch(object startVertex) { Flights item; Flights saveItem; int minDistance; IPriorityQueue pq = new MinHeap(); object vertex; var vertextQueue = new Queue(); graph.clearMarks(); saveItem = new Flights { FromVertex = startVertex, ToVertex = startVertex, Distance = 0 }; pq.enqueue(saveItem); Console.WriteLine("Last Vertex Destination Distance"); Console.WriteLine("-----------------------------------"); do { item = (Flights) pq.dequeue(); if (!graph.isMarked(item.ToVertex)) { graph.markVertex(item.ToVertex); Console.Write(item.FromVertex); Console.Write(" "); Console.Write(item.ToVertex); Console.WriteLine(" " + item.Distance); item.FromVertex = item.ToVertex; minDistance = item.Distance; vertextQueue = graph.getToVertices(item.FromVertex); while (vertextQueue.Count > 0) { vertex = vertextQueue.Dequeue(); if (!graph.isMarked(vertex)) { saveItem = new Flights { FromVertex = item.FromVertex, ToVertex = vertex, Distance = minDistance + graph.weightIs(item.FromVertex, vertex) }; pq.enqueue(saveItem); } } } } while (!pq.isEmpty()); }