public override IndexPQBase <TKey> Clone() { var copy = new IndexMinPQ <TKey>(n + 1); for (int i = 1; i <= n; i++) { copy.Insert(pq[i], keys[pq[i]]); } return(copy); }
/** * Compute a minimum spanning tree (or forest) of an edge-weighted graph. * @param G the edge-weighted graph */ public EagerPrimMST(EdgeWeightedGraph G) { edgeTo = new Edge[G.V]; distTo = new double[G.V]; marked = new bool[G.V]; pq = new IndexMinPQ <Double>(G.V); for (int v = 0; v < G.V; distTo[v++] = Double.MaxValue) { ; } for (int v = 0; v < G.V; v++) // run from each vertex to Find { if (!marked[v]) { prim(G, v); // minimum spanning forest } } // check optimality conditions // assert check(G); Contract.Assert(check(G)); }