public Dijstra(GridWorld G, int s) { world = G; this.s = s; int V = G.VertexCount; marked = new bool[V]; edgeTo = new DirectedWeightedEdge[V]; cost = new double[V]; for (var i = 0; i < V; ++i) { cost[i] = double.MaxValue; } cost[s] = 0; pq = new IndexMinPQ <double>(V); pq.Insert(s, 0); while (!pq.IsEmpty) { var v = pq.DelMin(); marked[v] = true; foreach (var e in G.Adj(v)) { Relax(G, e); } } }
public IndexMinPQEnumerator(T[] keys, int[] pq, int[] qp, int N) { this.keys = keys; this.pq = pq; this.qp = qp; this.N = N; current = new IndexMinPQ <T>(keys, pq, qp, N); }
public void Reset() { current = new IndexMinPQ <T>(keys, pq, qp, N); }